用于在子文件夹中查找文件夹并获取路径的批处理脚本

Batch Script to Find a Folder inside Sub Folders and get Path

我正在尝试获取包含 .snapshot 文件夹的目录路径。 .snapshot 应在所有父目录和子目录中搜索。

我有一个类似于树命令输出的目录结构(只是更复杂,部署需要一个巨大的 NAS 驱动器)

我的脚本,如下所示,到目前为止只列出了可能包含 .snapshot 的 100 个目录中的一个

set Dir=C:\Vol
cd %Dir%
for /d  /r "%Dir%" %%a in (*) do if /i "%%~nxa"==".snapshot" set "folderpath=%%a"
echo "%folderpath%"

输出:

C:\Vol\xnd76540\u44753\mike.smith\.snapshot

我的问题

如何检查一个文件夹的所有子目录中的 .snapshot,返回到父目录并按照另一条路径在其他子目录中再次搜索 .snapshot 等等? 性能提示表示赞赏。

找不到更相关的代码段。

使用

set Dir=%1
cd %Dir%
for /d  /r "%Dir%" %%a in (*) do if /i "%%~nxa"==".snapshot" set "folderpath=%%a"
echo "%folderpath%"

保存这个批处理文件说 temp.bat

现在在另一个批处理文件中通过传递参数来调用它

temp.bat "C:\Vol1"
temp.bat "another location"

你几乎完成了

for /d  /r "%Dir%" %%a in (*) do if /i "%%~nxa"==".snapshot" (
    echo %%~dpa
)

或者,

for /d /r "%Dir%" %%a in (.snapshot) do if exist "%%~fa" (
    echo %%~dpa
)

问题中原始for的问题是它在迭代时分配一个变量,当for结束时,回显的值是最后分配的值,因为在每次迭代中值被覆盖。

相反,回显 运行 for 中的值,您将获得完整列表。