For loop 为什么在这种情况下for/D起作用?
为什么此代码工作时没有任何错误:For loop 为什么在这种情况下for/D起作用?,for-loop,cmd,For Loop,Cmd,为什么此代码工作时没有任何错误: for /D %%i in (".exe";".cmd") do ( echo %%i ) 但是在命令帮助中“for”指定了一组一个或多个文件。在NT中,for、dir、del等接受多个文件规范 del c:\folder\*.txt c:\folder\*.pdf 等 或 从onfor命令 for {%variable|%%variable} in (set) do command [ CommandLineOptions] (设置):必需。指定一个或多
for /D %%i in (".exe";".cmd") do ( echo %%i )
但是在命令帮助中“for”指定了一组一个或多个文件。在NT中,for、dir、del等接受多个文件规范
del c:\folder\*.txt c:\folder\*.pdf
等
或
从onfor
命令
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
(设置):必需。指定一个或多个文件、目录、值范围或文本字符串,以使用指定的
命令
命令:必需。指定要对包含的每个文件、目录、值范围或文本字符串执行的命令
在指定的(集合)中
for命令用每个文本字符串替换%variable或%%variable
直到命令处理所有文件为止
指定一组文件
set参数可以表示一组文件或多个文件
文件组。您可以使用通配符(即,*和?)来指定
文件集
使用for命令时,集合中的第一个值将替换
%变量或%%variable,然后指定的命令处理此
价值此操作将一直持续,直到所有文件(或文件组)
对与设定值相对应的数据进行处理
文档可能被认为是不明确的:虽然它表明的将在文件/文件夹上迭代,但它没有说明文件/文件夹需要存在。仅当使用通配符时,处理的元素才是真实的现有文件/文件夹。但是如果没有通配符,就不会进行元素存在性的测试,集合中的元素被视为文本字符串
for
和for/d
命令的行为方式相同(第一个用于文件,第二个用于目录):迭代in
子句中提供的元素,如果其中任何元素包含通配符,则展开它并处理匹配的文件/文件夹列表,而不是指定的元素
就你而言
for /D %%i in (".exe";".cmd") do ( echo %%i )
包含两个要处理的元素(将;
视为分隔符)。因此,for将迭代该集合中的元素“.exe”
不包含通配符,因此它不需要扩展,并且对该元素执行do
子句。一旦完成,对“.cmd”
重复同样的过程,因为command.com
是由一群吸毒的猴子编写的,而cmd.exe
团队收到的唯一简短信息是最大限度地提高兼容性:-)@paxdiablo聪明,但/D
在Windows 2000之前不是有效的选项。
for /D %%i in (".exe";".cmd") do ( echo %%i )