批处理文件中的符号(@)是什么?它的作用是什么?

n61*_*007 88 windows terminology dos batch-file at-sign

一个熟悉windows/dos批处理脚本的人会认识到这一行:

@echo off
Run Code Online (Sandbox Code Playgroud)

很多天以来,我对这种情绪感到满意,这@就是为什么echo off要写在批处理的顶部,就是这样.

然而,最近我就翻过这样一行:

@php foo bar
Run Code Online (Sandbox Code Playgroud)

另一条这样的:

@call \\network\folder\batch.bat
Run Code Online (Sandbox Code Playgroud)

这加强了我的怀疑,@它不仅仅是echo模式切换.但是@没有在Windows XP中列出:命令行参考AZ我试图用作参考,因此我不确定如何找到关于此的确切信息:

@批处理的标志是什么,它的术语是什么,它有什么作用?

Sun*_*nny 137

符号 - @

@ symbol告诉命令处理器要少冗长; 仅显示命令的输出而不显示正在执行的命令或与执行相关的任何提示.使用时,它被添加到命令的开头,没有必要在"@"和命令之间留一个空格.

当"echo"设置为"off"时,不必使用"@",因为将"echo"设置为"off"会导致此行为变为自动.默认情况下,当脚本执行开始时,"Echo"通常设置为"on".这就是"@echo off"常用的原因,可以在不显示关闭它的情况下关闭回声.

echo verbose
@echo less verbose
pause
Run Code Online (Sandbox Code Playgroud)

  • 显然这对每个人来说都是显而易见的,但我不知道这只有在从`.bat`文件执行时才有效,即它不能直接从命令行运行. (6认同)
  • 接受这一个是为*现场解释*没有*...*任何与执行*相关的提示,并说出(详细程度)*命令处理器*,并告诉空间.:)不错的测试批次! (3认同)
  • `当“echo”设置为“off”时,没有必要使用“@”,因为将“echo”设置为“off”会导致此行为自动发生。”这是正确的。我还发现这可能会导致不必要的副作用。例如,出于某种原因,在“clip < file.txt &pause”命令后使用“@copy”会导致我的剪贴板复制文本“1 file Copyed”。 (3认同)
  • 糟糕的是我看不到它的官方文档! (2认同)