2012-08-26 61 views
-1

我該如何修改它使其能夠搜索子目錄?我嘗試了一些不同的東西,但我似乎無法破解它?如何搜索子導演批量

set /p "folder=Folders Name that the photo's are in: " 

setlocal 
if "%folder%" == "" call :autodetect1 
cls 
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
     if exist "%%d:\%folder%\" ( 
      echo Device was found on %%d: && set folderfound=%%d:\%folder%\ 
     ) else (
      echo Device was not found on %%d: 
    ) 
) 

回答

1

您需要使用for /r循環遞歸遍歷目錄:

for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    pushd %%d:\ 
    for /r \ %%p in (.) do (
     if exist "%%~p\%folder%\" ( 
      echo Device was found on %%d: && set "folderfound=%%~p\%folder%\" 
     ) else (
      echo Device was not found on %%d: 
     ) 
    ) 
    popd 
) 

簡短說明:
pushd命令切換到與存儲在%%d信的驅動器。
for /r循環從\(當前選擇驅動器的根目錄)開始,迭代運行所有子目錄。
popd返回到調用pushd之前的目錄。

這只是您的循環現在應該如何的一個例子。其他一切都保持不變。

順便說一句,你在你的腳本中使用:autodetect1,但它沒有定義任何地方...

+0

對不起,我沒有把那一部分我的壞 – Kysumi

+0

@Kysumi沒有問題,我只是想提醒你注意到一個潛在的問題,但它無論如何與答案無關。 –