我看到 @在这样的情况下被使用:
@
@echo off @echo start eclipse.exe
@在这里是什么意思?
这意味着不输出相应的命令:
@echo foo
还有
echo foo
前者只有 foo作为输出,而后者打印
foo
H:\Stuff>echo foo foo
可以看到运行的命令也是可见的。
对于完整的批处理文件,echo off将关闭此选项。但是,echo off调用本身仍然可见。这就是为什么在批处理文件的开头会看到 @echo off。关闭命令回显 还有不要回显关闭命令。
echo off
@echo off
在更复杂的批处理文件中,删除该行(或注释掉它)通常是一个有用的调试工具,因为您可以看到在错误消息之前运行了什么。
它继承了 DOS 的含义。
来自 技术备注 > 编程 > 批处理文件命令(存档版本)的“ @”部分:
@ : 在 DOS 3.3及更高版本中,隐藏了批处理命令的回显。该命令生成的任何输出都会得到回显。 At-sign 可以作为批处理文件中任何 DOS 命令、程序名或批处理文件名的前缀。
@ : 在 DOS 3.3及更高版本中,隐藏了批处理命令的回显。该命令生成的任何输出都会得到回显。
At-sign 可以作为批处理文件中任何 DOS 命令、程序名或批处理文件名的前缀。
没有它,您可以使用 echo off命令关闭命令回显,但是这个命令将首先回显。
@禁用该命令的 echo。如果没有它,echo start eclipse.exe行将打印两个预期的 start eclipse.exe 还有的 echo start eclipse.exe行。
echo start eclipse.exe
start eclipse.exe
echo off关闭默认命令回显。
因此,@echo off静默地关闭命令回显,只有打算写入的批处理作者的输出实际上被写入。
它的意思是“不要将命令回显到标准输出”。
奇怪的是,
将发送 echo off到输出! 因此,
设置这种自动回送行为-并停止它为所有未来的命令,也。
资料来源: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
另一个包含@的有用时间是在命令行中使用 FOR时:
FOR
FOR %F IN (*.*) DO ECHO %F
上一行显示 每个文件: 命令提示符、 ECHO命令和 ECHO命令的结果:
ECHO
FOR %F IN (*.*) DO @ECHO %F
仅显示 ECHO命令的结果。
你可以像下面这样在“ scriptBlock”中包含@:
@( echo don't echoed hostname ) echo echoed
特别是不要这样做:)
for %%a in ("@") do %%~aecho %%~a
默认情况下,批处理文件在运行时将显示其命令。第一个命令 @ Echo off的作用是关闭这个显示器。命令“ echo off”关闭整个脚本的显示,除了“ echo off”命令本身。前面的“ at”符号“@”使命令也适用于它自己。
批处理文件:
1@echo off (alone) = > output nothing
2 echo off (alone) = > “ echo off”显示在命令行中
3 echo off (然后 echo something) = >
4@echo off (然后 echo something) = >
请参见,echo off (alone)表示命令行中没有输出,但它本身显示; @ echo off (alone) ,表示命令行中没有输出,命令行本身也没有输出;