命令行中的“ @”是什么意思?

Apliex-Ddr

我从虚幻构建工具中找到了一些执行命令:

C:\VisualStudio\IDE2017\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe @"C:\MessageTag\Intermediate\Build\Win64\MessageTest\Development\DesktopPlatform\Module.DesktopPlatform.cpp.obj.response" /showIncludes

我测试了一个简单的命令行

cl @"F:\x\cc.txt"

文件内容为cc.txt:

x.cpp
-Fe"y.exe"

y.exe已创建,似乎文件“ cc.txt”中的行链接到一个字符串中。

但是,如果我只是键入以下内容:

@"F:\x\cc.txt"

在命令行中,将打开文本文件,既不显示文件内容也不执行文件内容的第一行。

“ @”到底是做什么的?是否有相关文档?

进一步的问题:这仅适用于cmd。有与Powerhsell相当的产品吗?

mklement0

调用时cl.exe,带@前缀的文件名表示响应文件,该文件是一个文本文件,其中通常包含命令行参数,“如果您的命令行参数超过127个字符,则很有用”。

在PowerShell中,@元字符(具有特殊含义的字符)在哪里,您需要将其转义为`@引号字符串或使其成为带引号的字符串的一部分,这也应在cmd.exe/批处理文件中起作用

# PowerShell

# Escape @ as `@
cl `@"F:\x\cc.txt"

#`# Alternatively, make @ part of the quoted string,
#   which also works from cmd.exe / a batch file.
cl "@F:\x\cc.txt"

@作为参数一部分的上述用法特定于cl.exe所调用的程序。

相反,使用@开始命令的由呼叫是(总是)解释cmd.exe或PowerShell的)

  • cmd.exe@在命令开始时,禁止在打印输出前回显该命令(这类似于echo off事前执行,但范围仅限于手头的命令)

    • 因此,执行@"F:\x\cc.txt"本身会执行"F:\x\cc.txt"-这将打开该文件进行编辑-不会回显先执行的命令。(注意,如果没有@该命令将只从一个根本的批处理文件执行时回荡下手@echo off。)
  • PowerShell:@语句开始时只能启动以下结构之一:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章