在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 off
closures默认命令回显。
所以@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”符号使命令也适用于自己。