为什么此代码可以正常运行:
for /D %%i in (".exe";".cmd") do ( echo %%i )
但是在帮助命令" for"写入该命令接受"指定一组一个或多个文件"。
答案 0 :(得分:0)
在NT中,for,dir,del等接受多个文件规范。
del c:\folder\*.txt c:\folder\*.pdf
等
或
dir "%userprofile%\desktop\*.*" "%userprofile%\documents\*.pdf"
答案 1 :(得分:0)
来自for
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
命令
for
(设置):必填。指定要使用指定进行处理的一个或多个文件,目录,值范围或文本字符串 命令
命令:必填。指定要对每个文件,目录,值范围或包含的文本字符串执行的命令 在指定的(集)中。
for命令用每个文本字符串替换%variable或%%变量 在指定的集合中,直到命令处理所有文件
指定一组文件 set参数可以表示单个文件组或多个文件 文件组。您可以使用通配符(即*和?)来指定 文件集
使用for命令时,set中的第一个值将替换 %variable或%% variable,然后指定的命令处理它 值。这一直持续到所有文件(或文件组)为止 对应于处理的设定值
文档可能被认为是不明确的:虽然它表明for
将遍历文件/文件夹,但它并未声明文件/文件夹需要存在。仅当使用通配符时,处理的元素才是真实的现有文件/文件夹。但是没有通配符,之前没有对元素存在进行测试,集合中的元素被认为是文本字符串。
for /d
和in
命令的行为方式相同(第一个用于文件,第二个用于目录):迭代for /D %%i in (".exe";".cmd") do ( echo %%i )
子句中提供的元素,如果有的话包括通配符,展开它并处理匹配的文件/文件夹列表而不是指定的元素。
在你的情况下,
;
包含两个要处理的元素(".exe"
被视为分隔符)。因此,for迭代遍历此集合中的元素。 do
不包含通配符,因此,它不需要扩展,并且对此元素执行".cmd"
子句。完成后,将对{{1}}