是否使用波浪线

是否使用波浪线

在编写批处理循环时,我养成了在脚本的命令部分中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""

相关内容