2017-06-07 55 views
0

我正在使用Windows。我在目錄的子目錄中有許多jpg文件。我不完全知道目錄的架構,這意味着我不知道子目錄有多少層。我需要做的是根據路徑處理jpg文件。這裏有一個例子:
Windows蝙蝠:目錄中的循環文件

dir 
|---sub dir1 
|  |-----sub dir11 
|    |-----a.jpg 
|    |-----b.jpg 
|---sub dir2 
     |-----c.jpg 
     |-----d.jpg 

所以我需要如下執行命令:

process.bat C:\dir\sub dir1\sub dir11\a.jpg C:\dir\sub dir1\sub dir11\b.jpg 
process.bat C:\dir\sub dir2\c.jpg C:\dir\sub dir2\d.jpg 

我不知道該怎麼寫這樣一個bat文件尤其是蝙蝠處理路徑中包含空格。我不知道空間是否會造成一些麻煩。

我下面嘗試,但它不工作:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (C:\dir\*) Do (
    Set "Files=" 
    For /f %%B in ("%%~fA\*.jpg") Do Set Files=!Files! "%%~fB" 
    If defined Files echo process.bat %%~fA\*.jpg 
) 

pause 

當我執行該腳本,我得到的結果如下:

process.bat C:\dir\sub dir1\*.jpg 
process.bat C:\dir\sub dir2\*.jpg 

看來, *被視爲正常人物。

回答

1
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (C:\dir\*) Do (
    Set "Files=" 
    For /F "delims=" %%B in ('dir /S /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB" 
    If defined Files echo process.bat !Files! 
) 

pause 
0
If defined Files echo process.bat !files! 

應該解決的問題 - 但無論是process.bat會合作,還有待確定。如果需要,您需要列出process.bat

+0

我只是嘗試你的改變。它似乎工作,除了路徑中的空間引發另一個問題。現在我得到這樣的結果:'process.bat C:\ dir \ sub process.bat C:\ dir \ sub' – Yves

+0

我只是刪除路徑中的所有空格,但它仍然不起作用。我得到這個:'process.bat C:\ dir \ subdir1 \ *。jpg process.bat C:\ dir \ subdir2 \ *。jpg' – Yves

+0

問題解決了。我提出了另一個答案。 – Yves