“@”在 Windows 批处理脚本中是什么意思

我看到 @在这样的情况下被使用:

@echo off


@echo start eclipse.exe

@在这里是什么意思?

285391 次浏览

这意味着不输出相应的命令:

@echo foo

还有

echo foo

前者只有 foo作为输出,而后者打印

H:\Stuff>echo foo
foo

可以看到运行的命令也是可见的。

对于完整的批处理文件,echo off将关闭此选项。但是,echo off调用本身仍然可见。这就是为什么在批处理文件的开头会看到 @echo off。关闭命令回显 还有不要回显关闭命令。

在更复杂的批处理文件中,删除该行(或注释掉它)通常是一个有用的调试工具,因为您可以看到在错误消息之前运行了什么。

它继承了 DOS 的含义。

来自 技术备注 > 编程 > 批处理文件命令(存档版本)的“ @”部分:

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

At-sign 可以作为批处理文件中任何 DOS 命令、程序名或批处理文件名的前缀。

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

@禁用该命令的 echo。如果没有它,echo start eclipse.exe行将打印两个预期的 start eclipse.exe 还有echo start eclipse.exe行。

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

另一个包含@的有用时间是在命令行中使用 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

默认情况下,批处理文件在运行时将显示其命令。第一个命令 @ Echo off的作用是关闭这个显示器。命令“ echo off”关闭整个脚本的显示,除了“ echo off”命令本身。前面的“ at”符号“@”使命令也适用于它自己。

批处理文件:

1@echo off (alone) = > output nothing enter image description here

2 echo off (alone) = > “ echo off”显示在命令行中

enter image description here

3 echo off (然后 echo something) = > enter image description here

4@echo off (然后 echo something) = > enter image description here

请参见,echo off (alone)表示命令行中没有输出,但它本身显示; @ echo off (alone) ,表示命令行中没有输出,命令行本身也没有输出;