我看到 @
在这种情况下使用:
@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
命令的结果。
在批处理文件中:
https://i.stack.imgur.com/h8un3.png
2 echo off(solo)=> 命令行中显示的“echo off”
https://i.stack.imgur.com/40pth.png
https://i.stack.imgur.com/GhxkA.png
https://i.stack.imgur.com/IUxl6.png
看,echo off(solo),意思是命令行没有输出,但本身就显示; @echo off(solo),表示命令行没有输出,本身也没有;
您可以像这样在“scriptBlock”中包含@:
@(
echo don't echoed
hostname
)
echo echoed
尤其是不要那样做:)
for %%a in ("@") do %%~aecho %%~a