在编写批处理循环时,我养成了在脚本的命令部分中FOR
使用变量占位符名称的习惯,并用双引号将其括起来。tildes
示例语法
FOR %%A IN ("*.*") DO ECHO "%%~A"
原因
我通常会将这样的脚本作为标准来编写,无论它们是否真的需要,我都会毫不犹豫地这样做。我喜欢它从set
循环部分中删除双引号,然后在command parameter
循环部分中明确地将它们添加回去。
问题
FOR
是否存在这样的情况:通过批处理脚本或命令行循环使用波浪号实际上可能会造成危害?tildes
从其他人的经验来看,或者在某处正式记录下来,为什么您会或不会因为这个原因而希望FOR
通过 cmd 或批处理使用循环?
答案1
在您的具体使用情况下,它并没有什么区别,但也不会造成损害:
- 因为通过通配符迭代的文件名总是不带引号地返回。
当迭代一些双引号字符串(尤其是 cmd 行参数%*
)时,
我总是使用它们:
@Echo off
For %%A IN (
"this is a sentence"
two words
"some words"
) Do (
Echo with tilde: "%%~A"
Echo w/o tilde: "%%A"
Echo:
)
> SU1397704.cmd
with tilde: "this is a sentence"
w/o tilde: ""this is a sentence""
with tilde: "two"
w/o tilde: "two"
with tilde: "words"
w/o tilde: "words"
with tilde: "some words"
w/o tilde: ""some words""