我正在尝试获取包含 .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,依此类推? 表现提示赞赏。
无法找到更相关的代码段。
答案 0 :(得分:3)
你差不多完成了
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
内的值,您将获得完整列表。
答案 1 :(得分:0)
使用
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"