在PowerShell中使用文件路径中的空格运行cmd / c

时间:2018-10-28 03:32:17

标签: powershell cmd

我正在尝试在PowerShell中运行以下命令

PS C:\Users\Administrator> cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\vsdevcmd.bat && nuget restore && msbuild mywebapp.sln /p:DeployOnBuild=true /p:PublishedProfile=ServerFolderProfile"

这会产生错误

'C:\Program' is not recognized as an internal or external command. 

我的路径中有空格,我正在运行由&&分隔的几个命令,这使所有事情搞砸了。我尝试在所有地方都加引号,但我无法使它正常工作。

如果我只运行命令的第一部分

cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\vsdevcmd.bat"

它工作正常。但是我也无法使其他命令正常工作。

1 个答案:

答案 0 :(得分:2)

我应该更仔细地阅读cmd.exe的文档。

它说明

  

如果指定了/ C或/ K,则命令行的其余部分将作为新命令在新Shell中处理。如果用引号引起来,则接受由命令分隔符“&”或“ &&”分隔的多个命令

https://ss64.com/nt/cmd.html

所以我只需要将命令更改为

PS C:\Users\Administrator> cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\vsdevcmd.bat" "&&" nuget restore "&&" msbuild mywebapp.sln /p:DeployOnBuild=true /p:PublishedProfile=ServerFolderProfile