批处理脚本:查找特定目录名称

4
我正在尝试编写批处理脚本,以便在路径 "C:\project" 中查找名为"Mdata"的目录。如果该目录不存在,则继续在该路径内的每个目录中搜索,直到找到 "Mdata" 目录为止。如果找到该目录,则会在“ Mdata”目录中执行一组命令。
我尝试使用 "For /D" 命令:
FOR /D %variable IN (set) DO command [command-parameters]

但是我并不十分理解它以及它是如何工作的。
请您帮助,谢谢。

1个回答

6
for  /f "delims=" %%a in ('dir /b /s /a:d "C:\project\" ^|findstr /e /i "\Mdata"') do (
  @echo "%%~a"
  @echo some command here
)

试试这个。


谢谢 - 它可以工作,但它只显示了找到的最后一个目录位置,而我有多个名为“Mdata”的目录。@npocmaka - YWATFA
我对 dir 命令的语法有点困惑。当与 /a 开关一起使用时,帮助语法为 [/a[[:]attributes]]。这个命令中的 :(冒号)字符是命令的一部分吗?在这种情况下,dir /a:d "C:\project\" 的输出是什么? - Minh Tran
1
@MinhTran 冒号 : 可以省略。它用于将 /a 开关与所需属性分开。dir /a:d "C:\project\" 将打印出 c:\project 目录下所有目录,但不包括子文件夹。 - npocmaka
谢谢。最后,^|findstr /e /i "\Mdata" 是将 C:\projects 下所有子目录名称中匹配 Mdata 的都传输到 /a:d 开关下,还是右侧紧接着 C:\project 参数的参数被理解为要由 dir 搜索的目标目录名称? - Minh Tran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接