将文件列表转换为另一个的args中的变量

时间:2018-01-25 05:27:07

标签: powershell

所以我在一个文件夹中有一个文件列表,我想在合并文件的命令中用作参数。

我最终需要的语法如下所示:

python runcommand.py Arg1 Arg2 Arg3 Arg4 Arg5 Arg6.txt

arg1-5是文件名列表。

努力做到这一点的最佳方法。不确定我是以最好的方式去做的。好像我应该能够gci -rec FolderLocation并从那里获取一些变量然后从同一个PowerShell脚本中调用Python脚本?

1 个答案:

答案 0 :(得分:1)

处理未命名参数列表中的最后一项与其他未命名参数不同的是糟糕的界面设计。如果特定参数具有特定目的:将其设为命名参数。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-o', metavar='output', help='Output file.')
parser.add_argument('file', nargs='+', help='Input files.')
args = parser.parse_args()

然后你可以在PowerShell中运行它:

$files = Get-ChildItem 'C:\some\folder' -Recurse
& python runcommand.py -o 'C:\path\to\output.txt' $files

但是,为什么首先使用不同语言的脚本,在PowerShell中连接文件所需要做的就是这样?

Get-ChildItem 'C:\some\folder' -Recurse | Where-Object {
    -not $_.PSIsContainer
} | Get-Content | Set-Content 'C:\path\to\output.txt'