在Windows批处理脚本中,“@”是什么意思?

我看到@被用在这样的背景下:

 @echo off @echo start eclipse.exe 

@在这里意味着什么?

这意味着不输出相应的命令。 比较以下两个batch file:

 @echo foo 

 echo foo 

前者只有foo作为输出而后者打印

 H:\Stuff>echo foo foo 

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

echo off将closures完整的batch file。 但是,呼叫回拨本身仍然是可见的。 这就是为什么您在batch file的开头看到@echo off原因。 closures命令回显不要回显命令closures。

删除该行(或将其注释掉)在更复杂的batch file中通常是有用的debugging工具,因为您可以看到在出现错误消息之前运行的内容。

这意味着“不要将命令回显到标准输出”。

奇怪的是,

 echo off 

会发送echo off到输出! 所以,

 @echo off 

设置这个自动回应的行为 – 并停止所有未来的命令。

资料来源: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx? mfr= true

@禁用该命令的回显。 没有它, echo start eclipse.exe行将打印预期的start eclipse.exe echo start eclipse.exe行。

echo offclosures默认命令回显。

所以@echo off默默closures命令回显,只输出想要写入的批处理作者实际写入。

它inheritance了DOS的含义。 @ :

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

没有它,你可以使用echo off命令closures命令回显,但是该命令会首先被回显。

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

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

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

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

只显示ECHO命令的结果。

你可以像这样在一个'scriptBlock'中包含@

 @( echo don't echoed hostname ) echo echoed 

特别是不要这样做:)

 for %%a in ("@") do %%~aecho %%~a 

默认情况下,batch file将在运行时显示其命令。 @echoclosures的第一个命令的目的是closures这个显示。 “echo off”命令会closures整个脚本的显示,除了“echo off”命令本身。 前面的“at”符号使命令也适用于自己。