2017-06-07 81 views
-1

我需要使用名爲here.bat的蝙蝠來處理相同目錄中的文件。這裏有一個例子:
Windows蝙蝠:如何處理每個子目錄的文件

mydir 
|----mybat.bat 
|----here.bat 
|----subdir 
     |-----subdir2 
       |-----subdir3 
          |-----subdir31 
          |  |-----a.jpg 
          | 
          |-----subdir32 
            |-----b.jpg 

我需要使用here.bat處理a.jpgb.jpg。所以我寫如下命名mybat.bat一個bat文件:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

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

pause 

當我執行mybat.bat,我得到如下結果:

call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg" "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg" 

但是這不是我所需要的。我需要處理與here.bat位於同一目錄中的jpg文件,如果它們不在同一個目錄中,則應單獨處理它們。這意味着我需要如下結果:

call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg" 
call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg" 
+0

爲什麼在[您的其他類似的問題(https://stackoverflow.com/questions/44402963/windows-bat-loop-files-in-directories)不充分的答案嗎? –

+0

@JeffZeitlin在我看來,這是因爲其他問題中的子路徑完全不同:'subdir1 ...'和'subdir2 ...'。但是這裏的子路徑非常相似。那麼,我不確定...但你可以在這個問題上試試我的答案。我相信你會得到同樣的問題。 – Yves

+0

但是,相同的技術應該工作,只有細節不同。您可能需要花一些時間來了解更多關於一般編程的知識,以及專門的批量編程,以便您可以自己解決這些問題,而不是反覆詢問實際上只有細微差異的問題。 –

回答

0

您不斷變化的要求,難以提供在第一次運行的解決方案。這個版本應該這樣做:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
for /R ".\subdir" %%A in (.) do (
    Set "Files=" 
    If Exist "%%~fA\*.jpg" For /F "delims=" %%B in (
     'dir /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB" 
    If defined Files echo call here.bat !Files! 
) 
pause