PowerShll запустить CMD с пробелами в аргументе - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь добавить наблюдатель для папки, как только файл создан, запустите программу

$script= "C:\test.py"
$watcher.Path ="e:\my folder\test folder\dropbox"    

Start-Process cmd -Argument "/k python $script $path" 

Проблема в том, что это всегда приводит к ошибке, говоря e: \ my no such file

Я знаю, что это проблема с пробелом, но я попробовал следующее, все равно получаю ту же ошибку

Start-Process cmd -Argument "/k python $script '$path'" 

Кто-нибудь знает, как это исправить?

большое спасибо

1 Ответ

0 голосов
/ 05 марта 2020

Вам необходимо использовать экранированные встроенные двойные кавычки с Start-Process:

$script= "C:\test.py"
$path = "e:\my folder\test folder\dropbox"    

Start-Process cmd -Argument "/k python $script `"$path`"" 

Без этого пробелы в значении $path разбивают путь на , кратную аргументы, когда cmd получает аргументы.

`" встраивает дословно " в строку "...".

В качестве отступления:

  • Если вы намереваетесь выполнить команду асинхронно , в новом окне (на Windows), как подсказывает ваша команда, Start-Process действительно является правильный инструмент.

  • Напротив, не используйте Start-Process, если вы хотите запускать другие консольные приложения (такие как cmd) синхронно , в том же окне ; в этом случае просто вызовите консольное приложение напрямую - подробнее см. этот ответ .

...