首页 > 解决方案 > 需要使用 PowerShell 将包含文件列表的文件拆分为块 AG、HN ...

问题描述

文本文件包含按字母顺序排列的文件列表。

path\afilename1.nnn
path\bafilename1.xxx
path\cafilemane2.sdf
path\ccfilename3.fds
...

我需要将文件划分为单独的文件,其中包含以字母 A 到 G 开头的文件列表 下一个文件包含文件列表 H 到 N 等等......

标签: powershelltext

解决方案


我觉得我们可以以某种方式Group-Object在这里为我们工作,但是 Lieven 提到的转换方法是一个非常好的开始。我要补充一点,它Switch{}可以直接查询文件,所以很简单:

$a_g_Files = [Collections.ArrayList]@()
$h_n_Files = [Collections.ArrayList]@()

Switch -RegEx -File 'c:\temp\filelist.txt'
{
    '^path\\[a-g]' { [void]$a_g_Files.Add( $_ ); Break }
    '^path\\[h-n]' { [void]$h_n_Files.Add( $_ ); Break }
}

$a_g_Files | Add-Content "c:\temp\a-gfiles.txt"
$h_n_Files | Add-Content "c:\temp\h-nfiles.txt"

这部分取决于“路径”是否是字面的,或者它是否因行而异。但可以肯定的是,即使是变化也可以用 RegEx 处理。


推荐阅读