我从虚幻构建工具中找到了一些执行命令:
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相当的产品吗?
调用时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:@
语句开始时只能启动以下结构之一:
@"<newline>...<newline>"@
或@'<newline>...<newline>'@
)一个阵列的子表达式的操作(@(<command...>)
)
因此,尝试@"F:\x\cc.txt"
自行执行会导致语法错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句