[英]What does “@” mean in Windows batch scripts
我看到@
在这种情况下使用:
@echo off
@echo start eclipse.exe
@
这里是什么意思?
这意味着不输出相应的命令。 比较以下两个批处理文件:
@echo foo
和
echo foo
前者只有foo
作为输出,而后者打印
H:\Stuff>echo foo
foo
(至少在这里)。 可以看出,运行的命令也是可见的。
echo off
将为完整的批处理文件关闭此功能。 但是, echo off
调用本身仍然可见。 这就是为什么您会在批处理文件的开头看到@echo off
。 关闭命令回显,不要回显关闭它的命令。
在更复杂的批处理文件中删除该行(或将其注释掉)通常是一个有用的调试工具,因为您可以看到在错误消息之前运行的内容。
这意味着“不要将命令回显到标准输出”。
比较奇怪的是,
echo off
会将echo off
发送到输出! 所以,
@echo off
将此自动回显行为设置为关闭 - 并在所有未来命令中停止它。
来源: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx? mfr= true
默认情况下,批处理文件将在运行时显示其命令。 @echo off 的第一个命令的目的是关闭此显示。 命令“echo off”关闭整个脚本的显示,除了“echo off”命令本身。 前面的“at”符号“@”使命令也适用于自身。
@
禁用该命令的回显。 没有它, echo start eclipse.exe
行将打印预期的start eclipse.exe
和echo start eclipse.exe
行。
echo off
关闭默认命令回显。
所以@echo off
静默关闭命令回显,只输出想要写入的批处理作者实际写入。
它继承了 DOS 的含义。 @ :
在 DOS 3.3 及更高版本中,隐藏批处理命令的回显。 该命令生成的任何输出都会被回显。
没有它,您可以使用echo off
命令关闭命令回显,但该命令将首先被回显。
包含 @ 的另一个有用时间是在命令行中使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.