ChatGPT解决这个技术问题 Extra ChatGPT

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

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

@echo off

@echo start eclipse.exe

@ 在这里是什么意思?

快速说明:@ 脚本中的符号会抑制相应命令的输出。

J
Joey

这意味着不输出相应的命令。比较以下两个批处理文件:

@echo foo

echo foo

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

H:\Stuff>echo foo 
foo

(至少在这里)。可以看出,运行的命令也是可见的。

echo off 将为完整的批处理文件关闭此功能。但是,echo off 调用本身仍然可见。这就是您在批处理文件的开头看到 @echo off 的原因。关闭命令回显并且不要回显关闭它的命令。

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


J
Jeremy McGee

这意味着“不要将命令回显到标准输出”。

比较奇怪的是,

echo off

echo off 发送到输出!所以,

@echo off

设置此自动回显行为关闭 - 并为所有未来的命令停止它。

来源:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true


M
Muhammad Faizan Khan

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


我在您的帖子中看不到更多或更好的信息,就像其他 5 年前的帖子一样。
对我来说,这更容易理解。
s
sarnold

@ 禁用该命令的回显。没有它,echo start eclipse.exe 行将同时打印预期的 start eclipse.exe echo start eclipse.exe 行。

echo off 关闭默认命令回显。

所以@echo off默默地关闭命令回显,只输出打算写入的批处理作者是实际写入的。


D
Damien_The_Unbeliever

它继承了DOS的含义。 @

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

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


链接现已断开
A
Aacini

另一个包含 @ 的有用时间是在命令行中使用 FOR。例如:

FOR %F IN (*.*) DO ECHO %F

上一行显示每个文件:命令提示符、ECHO 命令和 ECHO 命令的结果。这边走:

FOR %F IN (*.*) DO @ECHO %F

仅显示 ECHO 命令的结果。


@PsychoData:有趣的是,您对提供有用信息的唯一答案投了反对票,而其他4个答案已经以同样的方式回答了这个问题......
我投了反对票,因为这不是他问题的答案。您甚至没有解释 @ 的作用。如果您有很酷的用法示例,那很好,但这仍然不是他问题的答案。您可能还不知道我还对答案进行了投票,并解释了它的作用和来源。我不是无缘无故地投反对票。你的“答案”不是答案。这是一个有点相关的声明。
t
terwxqian

在批处理文件中:

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),表示命令行没有输出,本身也没有;


w
walid2mi

您可以像这样在“scriptBlock”中包含@:

@(
  echo don't echoed
  hostname
)
echo echoed

尤其是不要那样做:)

for %%a in ("@") do %%~aecho %%~a