gpt4 book ai didi

powershell - 命令行中的 "@"是什么意思?

转载 作者:行者123 更新时间:2023-12-03 12:58:08 25 4
gpt4 key购买 nike

我从 Unreal Build Tool 中找到了一些执行命令:

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 , 一个 @ - 前缀文件名表示 response file ,这是一个文本文件,其中包含通常是命令行参数的内容,“如果您的命令行参数超过 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 , 被调用的程序。

相比之下,使用 @命令的开始(总是)由调用shell(cmd.exe 或PowerShell)解释:

  • cmd.exe : @在命令开始时,在打印其输出之前抑制回显该命令(这就像预先执行 echo off,但仅限于手头的命令)

    • 因此,执行 @"F:\x\cc.txt"自己执行 "F:\x\cc.txt" - 打开该文件进行编辑 - 不回显首先执行的命令。 (请注意,如果没有 @,则仅当从@echo off 开头的批处理文件执行时才会回显该命令。)
  • PowerShell:@在语句的开头只能启动以下构造之一:

关于powershell - 命令行中的 "@"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57583913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com