我看到在这种情况下使用@
:
@echo off
@echo start eclipse.exe
@
在这里意味着什么?
答案 0 :(得分:166)
表示不输出相应的命令。比较以下两个批处理文件:
@echo foo
和
echo foo
前者只有foo
作为输出,而后者打印
H:\Stuff>echo foo
foo
(至少在这里)。可以看出,运行的命令也是可见的。
echo off
会关闭整个批处理文件。但是,echo off
调用本身仍然可见。这就是您在批处理文件开头看到@echo off
的原因。关闭命令回显和不回显关闭命令。
删除该行(或将其注释掉)通常是更复杂的批处理文件中有用的调试工具,因为您可以看到错误消息之前运行的内容。
答案 1 :(得分:19)
表示“不要将命令回显到标准输出”。
相当奇怪,
echo off
会将echo off
发送给输出!所以,
@echo off
关闭此自动回显行为 - 并为将来的所有命令停止它。
来源:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
答案 2 :(得分:11)
@
禁用该命令的echo。没有它,echo start eclipse.exe
行会打印预期的start eclipse.exe
和 echo start eclipse.exe
行。
echo off
关闭默认命令回显。
所以@echo off
默默地关闭命令回显,并且只输出要写入的批处理作者实际写入。
答案 3 :(得分:7)
答案 4 :(得分:5)
包含@的另一个有用时间是在命令行中使用FOR
时。例如:
FOR %F IN (*.*) DO ECHO %F
上一行显示每个文件的 :命令提示符,ECHO
命令和ECHO
命令的结果。这样:
FOR %F IN (*.*) DO @ECHO %F
只显示ECHO
命令的结果。
答案 5 :(得分:3)
默认情况下,批处理文件将在运行时显示其命令。 @echo off 的第一个命令的目的是关闭此显示。命令" echo off"关闭整个脚本的显示,除了" echo off"命令本身。 " at"签署" @"在前面使命令也适用于自己。
答案 6 :(得分:2)
你可以像这样在'scriptBlock'中包含@:
@(
echo don't echoed
hostname
)
echo echoed
尤其不要那样做:)
for %%a in ("@") do %%~aecho %%~a