windows – 批量循环使用预定义列表或扩展集的所有文件,并忽略所有其他文件类型

我有以下
Windows批处理脚本循环遍历当前目录中的所有文件:

FOR %%F in (%CD%\*.*) DO (
    :: I am doing my process here
)

我知道我可以使用* .ext遍历特定的文件类型,但是我需要循环遍历下面给出的所有文件类型并忽略所有其他类型,这些类型也只在单个FOR循环中:

php
phtml
css
js
sql
xml

如何通过尽可能对我的代码进行最轻微的修改来实现这一目标?

我不是一个批处理脚本,所以任何帮助将不胜感激.

最佳答案 如何在批处理文件中使用此命令行?

for %%I in (*.php *.phtml *.css *.js *.sql *.xml) do echo "%%I"

或者更好,取决于你想做什么:

for /F "delims=" %%I in ('dir /A-D /B *.php *.phtml *.css *.js *.sql *.xml 2^>nul') do echo "%%I"

具有DIR的版本也适用于具有隐藏属性集的文件,并且当重命名,移动或删除当前目录中的文件时更好,即当前目录文件列表由于FOR循环体中的命令而改变,因为处理的文件列表一旦执行DIR命令,FOR不会改变,这不是使用第一个解决方案的情况.第一种解决方案很容易导致意外行为,如双重处理文件,跳过意外文件或在当前目录中重命名,移动,修改或删除文件时无休止的运行循环.

在命令提示符窗口中运行/?和dir /?有关这两个命令的帮助,这两个命令同时支持在参数列表上指定多个通配符模式.

点赞