在从命令行运行的 PowerShell 命令中转义引号的正确方法?

问题描述 投票:0回答:1

我需要从批处理文件运行以下命令:

PowerShell -Command "Start-Process cmd -ArgumentList '/C "MKLINK /D "C:\Folder With Spaces\Another Folder" "%UserProfile%\Documents\Folder With Spaces""' -Verb RunAs"

但是,当实际执行此命令时,两个带有空格的文件夹周围的引号将被完全忽略,并且该命令无法正确运行。 逃避本声明中涉及的各种引用的正确方法是什么? 我尝试在文件夹名称周围的引号前面使用`和^,但都不起作用。

powershell batch-file escaping quotes double-quotes
1个回答
0
投票
  • 对于

    powershell.exe
    (Windows PowerShell CLI),要使用传递给
    "
    参数作为要执行的 PowerShell 代码一部分的
    -Command
    字符,它们必须是 转义,最简单的形式为
    \" 
    .

  • 由于

    cmd.exe
    的解析怪癖,嵌入在
    "
    调用中的
    cmd /c "..."
    字符确实需要额外转义。

  • 因此:

PowerShell -Command "Start-Process cmd -ArgumentList '/C \"MKLINK /D \"C:\Folder With Spaces\Another Folder\" \"%UserProfile%\Documents\Folder With Spaces\"\"' -Verb RunAs"

	
© www.soinside.com 2019 - 2024. All rights reserved.