【发布时间】:2012-02-26 22:55:11
【问题描述】:
我需要在文件夹和所有子文件夹中找到所有具有特定文件名的文件(例如 main.css),然后对其进行处理(例如,重命名、移动、删除、添加文本行等)
【问题讨论】:
标签: windows batch-file find batch-processing
我需要在文件夹和所有子文件夹中找到所有具有特定文件名的文件(例如 main.css),然后对其进行处理(例如,重命名、移动、删除、添加文本行等)
【问题讨论】:
标签: windows batch-file find batch-processing
这是你需要的:
for /R %f in (main.css) do @echo "%f"
当然,您可以将echo 替换为您希望对文件执行的任何操作。如果需要,您可以使用通配符:
for /R %f in (*.css) do @echo "%f"
【讨论】:
虽然这将遍历目录树:
for /R %f in (main.css) do @echo "%f"
它实际上与文件名不匹配。也就是说,如果你有一棵树:
DirectoryA
A1
A2
for /R 操作将给出 DirectoryA/main.css 的 %f,然后是 DirectoryA/A1/main.css 等等即使 main.css 不在这些目录中。所以要确保确实有一个文件(或目录),你应该这样做:
for /R %f in (main.css) do @IF EXIST %f @echo "%f"
另外,请注意,您确实需要引用文件名,因为如果路径或文件包含空格,则目录遍历可能会爆炸。
以上至少是它在 Windows 8 中的工作方式。
【讨论】: