Как передать приведенный аргумент в Perl в Powershell? - PullRequest
1 голос
/ 12 января 2010

Я хочу вызвать Perl-скрипт из powershell, где указан параметр:

myProg -root="my path with spaces"

Я пытался использовать -root='"my path with spaces"', -root='my path with spaces', -root=\"my path with spaces\", но, похоже, ничего не работает. После нажатия <ENTER> я вижу >> как приглашение.

Как передать этот аргумент в кавычках в командной строке в Powershell?

Ответы [ 4 ]

2 голосов
/ 12 января 2010

Попытайтесь поместить весь аргумент в кавычки и избегайте внутренних кавычек, таким образом, PowerShell не будет пытаться его проанализировать:

myProg '-root=\"my path with spaces\"'
1 голос
/ 13 января 2010

Может быть полезно явно обозначить каждый аргумент командной строки. Вместо того чтобы полагаться на синтаксический анализатор, чтобы выяснить, какие аргументы используются через пробел, вы явно создаете массив строк, по одному элементу для каждого аргумента командной строки.

$cmdArgs = @( `
    '-root="my path with spaces"', `
    'etc', `
    'etc')

& "C:\etc\myprog.exe" $cmdArgs
0 голосов
/ 14 июля 2012

Я столкнулся с подобной проблемой при попытке использовать powershell для передачи аргументов с пробелами в исполняемый файл. В конце концов я обнаружил, что могу получить переданный в кавычки параметр путем тройного экранирования закрывающей двойной кавычки аргумента при использовании выражения-выражения:

iex "&`"C:\Program Files\Vendor\program.exe`" -i -pkg=`"Super Upgrade```" -usr=User -pwd=password2"

Что не очевидно, так это то, почему я могу использовать один символ обратной галочки для выхода из исполняемого файла, в то время как мне нужно использовать 3 обратных галочки для завершения параметра в кавычках. Все, что я знаю, это то, что это единственное решение, которое сработало для меня.

0 голосов
/ 12 января 2010

Я решил похожую проблему с

Invoke-Expression '&.\myProg.exe `-u:IMP `-p: `-s:"my path with spaces"'

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...