Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
397 views
in Technique[技术] by (71.8m points)

Running cmd /c from PowerShell with spaces in filepath

I am trying to run the following command in PowerShell

PS C:UsersAdministrator> cmd /c "C:Program Files (x86)Microsoft Visual Studio2017BuildToolsCommon7Toolsvsdevcmd.bat && nuget restore && msbuild mywebapp.sln /p:DeployOnBuild=true /p:PublishedProfile=ServerFolderProfile"

This produces the error

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

My paths have spaces and I'm running several commands seperated by && which is messing everything up. I have tried putting quotes all over the place but I can't get it to work.

If i run just the first part of the command

cmd /c "C:Program Files (x86)Microsoft Visual Studio2017BuildToolsCommon7Toolsvsdevcmd.bat"

it works fine. But I can't get the other commands to work too.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I should have read the documentation for cmd.exe more closely.

It states

If /C or /K is specified, then the remainder of the command line is processed as an immediate command in the new shell. Multiple commands separated by the command separator '&' or '&&' are accepted if surrounded by quotes

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

So I just had to change my command to

PS C:UsersAdministrator> cmd /c "C:Program Files (x86)Microsoft Visual Studio2017BuildToolsCommon7Toolsvsdevcmd.bat" "&&" nuget restore "&&" msbuild mywebapp.sln /p:DeployOnBuild=true /p:PublishedProfile=ServerFolderProfile

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...