如何防止批量回显括号
批处理文件
@C:
@CD \Users
@for /D %%d in ("*") do (
@echo "%%d"
)
输出
C:\Users>()
"Administrator"
...
C:\Users>()
"Public"
答案1
答案2
我没有看到针对 OP 的特定问题的答案:在 FOR 命令中使用括号时,如何防止批量回显括号(如示例中所示)。是的,在这种情况下可以删除它们,但假设有人确实希望在命令回显中抑制它们(正如实际要求的那样),因为即使只是为了可读性,它们也确实对单个命令有用...
如果命令 ECHO 为 OFF(默认),则前导 @(at)符号将禁止回显当前命令。在 FOR 循环中,“do ” [“d”-“o”-space] 之后的所有内容都将成为新的当前命令用于迭代 FOR 循环,包括括号 () 命令块。这些块中的每个(或唯一)命令都可以使用前导 @ 来抑制回显,如原始示例所示。如果块内的每个命令都使用前导 @ 来抑制回显,那么唯一回显的内容将是空括号集。
或者,可以通过在命令块前面加上 @ 来抑制整个命令块内所有下一级命令的回声:
@C:
@CD \Users
@for /D %%d in ("*") do @(
echo "%%d"
)
通过将前导 @ 移到命令块外部,最初回显的空集也会受到回显抑制。