首页 > 解决方案 > 在 PowerShell 中多次重复部分命令

问题描述

我有一个保存在变量中的命令$command,像这样
$command = path\to\.exe
The$command有一个参数-f表示文件的路径。此参数可以在同一行中重复多次以对多个文件执行命令,而无需在每次对每个文件执行命令时重新加载必要的模型。

示例:
如果我有 3 个文件我需要运行命令,那么我可以像这样执行它:

& $command -f 'file1' -f 'file2' -f 'file3' -other_params

如果我有 100 个文件,我想知道是否有任何方法可以在 PowerShell 中执行此操作,因为我显然无法尝试手动传递 100 个参数。

标签: powershellcommand-prompt

解决方案


PowerShell v4+解决方案,使用数组.ForEach()方法

# Open-ended array of input file names.
$files = 'file1', 'file2', 'file3'

& $command $files.ForEach({ '-f', $_ }) -other_params

PowerShell v3-中,通过ForEach-Objectcmdlet 使用以下命令(效率稍低):

# Open-ended array of input file names.
$files = 'file1', 'file2', 'file3'

& $command ($files | ForEach-Object { '-f', $_ }) -other_params

两种解决方案:

  • 构造一个与样本输入相同的平面字符串数组
    '-f', 'file1', '-f', 'file2', '-f', 'file3'

  • 依赖于PowerShell在调用外部程序(例如文件)时将数组元素作为单独参数传递的事实。*.exe


推荐阅读