windows - PowerShell:将命令应用于多个文件

标签 windows powershell batch-file

我对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'

有什么想法我做错了吗?

最佳答案

原来应该是这样的:
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’}}

关于windows - PowerShell:将命令应用于多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443667/

相关文章:

windows - 如何将 Windows 应用程序与特定文件类型相关联,但与其他应用程序共享该关联?

windows - XAMPP - 端口 80 被 PID 为 4 的 "Unable to open process"使用! 12

windows - CMD 打开而不是 VBS

powershell - 如何从 PsList 传输 'Elapsed Time'(或其他输出)

mysql - 使用批处理脚本将表导出到 csv 时在末尾添加额外文本

windows - 复制文件到当前目录

python - 使交互式 matplotlib 窗口不会在每次更新时弹出到前面(Windows 7)

iis - 脚本可以在IIS 6.0+中更新“应用程序池”属性的“标识”选项卡字段吗

powershell - 如何在多个服务器上远程更改服务帐户密码

batch-file - 如何在批处理文件中退出 SET/p