2012-08-26 32 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没有问题,我只是想提醒你注意到一个潜在的问题,但它无论如何与答案无关。 –