【问题标题】:What is the at sign (@) in a batch file and what does it do?批处理文件中的 at 符号 (@) 是什么,它有什么作用?
【发布时间】:2014-01-31 05:30:09
【问题描述】:

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

@echo off

很多天以来,我很高兴@echo off 应该写在批次顶部的感觉,就是这样。

不过,最近我came accross 有这样一行:

@php foo bar

another line 这样:

@call \\network\folder\batch.bat

这让我更加怀疑@ 不仅仅只是echo 模式切换。但是@ 未列在Windows XP: Command-line reference A-Z 中,我试图将其用作参考,因此我不确定如何找到关于此的明确信息:

什么是@ 批量登录,它的术语是什么,它有什么作用?

【问题讨论】:

  • 没有什么可添加到 ismail 答案中的。但仅供将来参考,答案包含在echo 命令的Remarks 部分下指定的“命令行参考A-Z” 文档中。
  • @MCND 我明白了,谢谢!不知道它是特定于回声的......好吧,我想我误解了echo 对批处理的重要性。这是echo#remarks的链接。
  • 我听说它被称为“静噪”,但我只有轶事证据。

标签: windows batch-file dos terminology at-sign


【解决方案1】:

在符号 - @

@ symbol 告诉命令处理器不要那么冗长;只显示命令的输出而不显示它正在执行或与执行相关的任何提示。使用时会在命令的开头添加,“@”和命令之间不必留空格。

当“echo”设置为“off”时,没有必要使用“@”,因为将“echo”设置为“off”会导致此行为变为自动。当脚本开始执行时,“Echo”通常默认设置为“on”。这就是常用“@echo off”的原因,即关闭回声而不显示关闭它的行为。

echo verbose
@echo less verbose
pause

【讨论】:

  • 接受这个用于现场解释没有 ... 任何与执行相关的提示,以及说诸如(冗长的)命令处理器,并讲述空间。 :) 测试批次也不错!
  • 显然这对每个人来说都是显而易见的,但我不知道这仅在从 .batfile 执行时才有效,即它不能直接从命令行工作。
  • When "echo" is set to "off" it is not necessary to use "@" because setting "echo" to "off" causes this behavior to become automatic. 这是真的。我还发现这会导致不必要的副作用。例如 - 由于某种原因在 clip < file.txt & pause 命令之后使用 @copy 会导致我的剪贴板复制文本 1 file copied
  • 不好的是官方文档上不了!
【解决方案2】:

不仅开头的“at”符号隐藏命令,对于某些命令,它还可以用于附加存储在文本文件中的命令参数。语法为exe @commands.txt。例如armclang.exe 支持此选项。

【讨论】:

  • 不,如果您尝试执行myExe@myCommands 之类的操作,则会失败并显示is not recognized as an internal or external command
  • @jeb,当您在@ 符号周围放置空格时会发生什么?我无法让它工作,但我已经看到它在批处理文件中使用...
  • 这是 Windows exe 命令行选项的(可能很常见)模式。 armclang.exe 支持此命令行选项 @<file> Read command-line options from <file>. 在帮助中找到此消息之前,我也假设这是批处理代码语法。我想我不习惯以@ 开头的命令行选项。
猜你喜欢
  • 2011-09-17
  • 2022-04-26
  • 2022-12-02
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多