在PowerShell和cmd中转义空格

rya*_*w55 6 powershell

我有一个PowerShell脚本,该脚本从命令行调用.exe以创建XML文件,然后PowerShell脚本正在读取该文件。

问题是,如果我在文件路径中有空格,则需要用双引号引起来,以将其传递给命令行。当我这样做时,PowerShell命令尝试读取双引号作为文件路径的一部分。有没有一种方法可以逃脱将其传递到命令行以及在PowerShell中使用命令的工作空间?

不得不对一个命令使用双引号,而对另一命令使用双引号似乎很愚蠢。

问题在于Get-Content行不喜欢双引号。

$outputpath = '"C:\Users\bob\Desktop\output new.xml"'
Start -FilePath $sqlpackage -ArgumentList "/action:DeployReport /SourceFile:$dacpacpath /Profile:$profilepath /OutputPath:$outputpath" -NoNewWindow -Wait

[xml]$xmldocument = Get-Content -Path $outputpath
Run Code Online (Sandbox Code Playgroud)

Jos*_*itt 7

我想,Deadly-Bagel 差点就吃到了。不要在 $outputpath 中使用双引号来保持 Get-Content 满意,而是将它们添加到您的参数列表字符串中。

请务必使用反引号 ` 进行转义。实际上,您可能只想对所有路径执行此操作:

$outputpath = 'C:\Users\bob\Desktop\output new.xml'
Start -FilePath $sqlpackage -ArgumentList "/action:DeployReport /SourceFile:`"$dacpacpath`" /Profile:`"$profilepath`" /OutputPath:`"$outputpath`"" -NoNewWindow -Wait

[xml]$xmldocument = Get-Content -Path $outputpath
Run Code Online (Sandbox Code Playgroud)

  • @Matt 仅当`$sqlpackage` 程序接受单引号作为有效引号字符时才有效。 (2认同)