2016-05-25 5 views
1

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

Get-ChildItem -Filter "*Q1 2016.pdf" | For.\pdftk A={$_.name} B={$_.name -replace 'Q1 2016.pdf','Q1 2016-quad.pdf'} cat A1-3 B1 A5-end output {$_.name -replace 'Q1 2016.pdf','Q1 2016-final.pdf'} 

я получаю следующее сообщение об ошибке:

pdftk.exe : The command parameter was already specified. 
At line:1 char:40 
+ ... 2016.pdf" | .\pdftk A={$_.name} B={$_.name -replace 'Q1 2016.pdf','Q1 ... 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidArgument: (:) [], ParameterBindingException 
+ FullyQualifiedErrorId : ParameterSpecifiedAlready 

Однако, когда я бегу один вызов команды, он отлично работает:

.\pdftk A='myfile-Q1 2016.pdf' B='myfile-Q1 2016-quad.pdf' cat A1-3 B1 A5-end output 'myfile-final.pdf' 

Любые мысли о том, что я делаю неправильно ?

+2

Возможный дубликат [Как запустить EXE-файл в PowerShell с параметрами с пробелами и кавычками] (http://stackoverflow.com/questions/1673967/how-to-run-an-exe-file-in-powershell-w-parameters-with-spaces-and -quotes) – sodawillow

ответ

0

Оказывается, это должно быть так:

Get-ChildItem -Filter “*Q1 2016.pdf” | ForEach {.\pdftk A=$($_.name) B=$($_.name -replace ‘Q1 2016.pdf’,’Q1 2016-quad.pdf’) cat A1-3 B1 A5-end output $($_.name -replace ‘Q1 2016.pdf’,’Q1 2016-final.pdf’)}

Так или иначе, следующий не работает, но выше делает:

Get-ChildItem -Filter “*Q1 2016.pdf” | ForEach {.\pdftk A={$_.name} B={$_.name -replace ‘Q1 2016.pdf’,’Q1 2016-quad.pdf’} cat A1-3 B1 A5-end output {$_.name -replace ‘Q1 2016.pdf’,’Q1 2016-final.pdf’}}

+0

это может быть попытка просто зачем нужен синтаксис $ ($ variable) http://stackoverflow.com/questions/13615676/what-does-variablename-mean-in-powershell – user1690166