Запуск cmd / c из PowerShell с пробелами в filepath - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь запустить следующую команду в 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 голосов
/ 28 октября 2018

Я должен был прочитать документацию для cmd.exe более внимательно.

В нем говорится

Если указано / C или / K, то остаток командной строкиобрабатывается как немедленная команда в новой оболочке.Несколько команд, разделенных разделителем команд '&' или '&&', принимаются, если они заключены в кавычки

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...