“@”在Windows批处理脚本中的含义是什么

时间:2011-12-13 08:10:02

标签: windows batch-file

我看到在这种情况下使用@

@echo off

@echo start eclipse.exe

@在这里意味着什么?

7 个答案:

答案 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)

它继承了DOS的含义。 @

  

在DOS 3.3及更高版本中,隐藏批处理命令的回显。该命令生成的任何输出都会被回显。

没有它,您可以使用echo off命令关闭命令回显,但该命令将首先被回显。

答案 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