如何搜索子目录批处理

时间:2012-08-26 09:38:46

标签: batch-file

我如何修改它以使其能够搜索子目录?我尝试了一些不同的东西,但我似乎无法破解它?

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 个答案:

答案 0 :(得分: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循环从\开始(当前选择驱动器的根目录)和iterates运行所有子目录 popd返回调用pushd之前的目录。

这只是你的循环现在应该是什么样子的一个例子。其他一切都是一样的。

顺便说一下,你在脚本中使用了:autodetect1,但它没有在任何地方定义......