Windows批处理脚本中的“ @”是什么意思


132

我看到@是在这样的上下文中使用的:

@echo off

@echo start eclipse.exe

@是什么意思?

Answers:


197

这意味着不输出相应的命令。比较以下两个批处理文件:

@echo foo

echo foo

前者仅foo作为输出,而后者打印

H:\Stuff>echo foo 
foo

(至少在这里)。可以看出,正在运行的命令也是可见的。

echo off将关闭完整的批处理文件。但是,echo off呼叫本身仍然可见。这就是为什么您@echo off在批处理文件的开头看到的原因。关闭命令回显不要回显关闭命令。

在更复杂的批处理文件中,删除该行(或注释掉)通常是一个有用的调试工具,因为您可以看到在出现错误消息之前正在运行什么。



14

所述@禁用回声为一个命令。没有它,echo start eclipse.exe行会同时打印预期start eclipse.exe echo start eclipse.exe行。

echo off关通过默认命令呼应圈。

因此,@echo off静默地关闭命令回显,并且仅实际输出打算写入的批处理作者。


11

它继承了DOS的含义。@

在DOS版本3.3和更高版本中,隐藏批处理命令的回显。该命令生成的任何输出都会被回显。

没有它,您可以使用echo off命令关闭命令回显,但是该命令将首先被回显。


链接现在已断开
-ojchase

8

默认情况下,批处理文件将在运行时显示其命令。@echo关闭的第一个命令的目的是关闭此显示。除“ echo off”命令本身外,命令“ echo off”将关闭整个脚本的显示。前面的“ @”符号“ @”使命令也适用于其自身。


3
与其他5年的帖子一样,我在您的帖子中看不到更多或更好的信息。
jeb

5

包含@的另一个有用时间是FOR在命令行中使用时。例如:

FOR %F IN (*.*) DO ECHO %F

每个文件的上一行显示:命令提示符,ECHO命令和ECHO命令结果。这条路:

FOR %F IN (*.*) DO @ECHO %F

ECHO显示命令结果。


@PsychoData:有趣的是,您否决了唯一的答案,该答案除了提供了有用的信息之外,还提供了其他4个答案,而这4个答案已经以相同的方式回答了这个问题……
Aacini

6
我拒绝了,因为这不是他的问题的答案。您甚至都没有解释@的作用。如果您有很好的用法示例,那很好,但这仍然不能解决他的问题。您可能还不知道,我也用答案解释了它的作用和来源。我不是无缘无故地投票。您的“答案”不是答案。这是一个有点相关的陈述。
PsychoData

2

您可以像这样在'scriptBlock'中包含@:

@(
  echo don't echoed
  hostname
)
echo echoed

特别是不要这样做:)

for %%a in ("@") do %%~aecho %%~a
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.