gpt4 book ai didi

powershell - Powershell-如何基于文件名创建文件名数组?

转载 作者:行者123 更新时间:2023-12-03 01:27:16 25 4
gpt4 key购买 nike

我正在基于Powershell中的文件名创建一个文件数组(特别是pdf)。所有文件都在同一目录中。我已经花了几天的时间,找不到任何具有此类示例或接近但可以更改的示例。这是我的文件名示例:

AR-HELLO.pdf
AF-HELLO.pdf
RT-HELLO.pdf
MH-HELLO.pdf
AR-WORLD.pdf
AF-WORLD.pdf
RT-WORLD.pdf
HT-WORLD.pdf
....

我想将所有以“HELLO”结尾的文件合并到一个数组中,并将“WORLD”结尾的文件合并到另一个数组中,依此类推。

我是创建脚本的新手,因此在此过程中很早就陷入了困境,但这是我可悲的开始:

Get-ChildItem *.pdf
Where BaseName -match '(.*) - (\w+)'


更新了信息...
我不知道“-”之后的名称,因此使用正则表达式可以正常工作。
我的最终目标是根据文件名中“-”后的匹配文本来组合PDF,最基本的代码是:
$file1 = "1 - HELLO.pdf"
$file2 = "2 - HELLO.PDF"
$mergedfile = "HELLO.PDF"

Merge-PDF -InputFile $file1, $file2 -OututFile $mergedfile

我还获得了使用此代码的Merge-PDF,该代码合并了目录中的所有PDF:
$Files = Get-ChildItem *.pdf
$mergedfiles = "merged.pdf"
Merge-PDF -InputFile $Files -OutputFile $mergedfiles

使用@Mathias的代码,-OutputFile的$ suffix部分可以工作,但是-InputFile部分返回错误“Exception,调用带有“0”参数的“Close””
$groups = Get-ChildItem *.pdf |Group-Object {$_.BaseName -replace 
'^.*\b(\w+)$','$1'} -AsHashTable

foreach($suffix in $groups.Keys) {Merge-PDF -InputFile $(@($groups[$suffix]))
-OutputFile "$suffix.pdf"}

对于-InputFile,我尝试了许多不同的品种,但不断收到“0”参数错误。哈希表中的值似乎是正确的,所以我不确定为什么它不起作用。

谢谢

最佳答案

这应该可以解决问题:

$HELLO = Get-ChildItem *HELLO.pdf |Select -Expand Name
$WORLD = Get-ChildItem *WORLD.pdf |Select -Expand Name

如果您想按基本名称中的最后一个单词对文件名进行分组,而又不事先知道它们,则可以使用正则表达式:
$groups = Get-ChildItem *.pdf |Group-Object {$_.BaseName -replace '^.*\b(\w+)$','$1'} -AsHashTable

然后您可以执行以下操作:
$groups['HELLO'].Name

对于所有以 HELLO单词结尾的文件名,或者对所有文件名进行迭代:

foreach($suffixGroup in $groups.GetEnumerator()){
Write-Host "There are $($suffixGroup.Value.Count) files ending in $($suffixGroup.Key)"
}

关于powershell - Powershell-如何基于文件名创建文件名数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61412448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com