按文件名的部分对文件进行分组并复制这些

按文件名的部分对文件进行分组并复制这些

我正在尝试找到一种方法来将文件分组在一起以便于复制。要求我有如下文件名:

aa0048.pdf 和 fg345_aa0048_somethingsomething.xml。文件夹中有 25000 个文件,配对之间的匹配是名称的部分相等。在此示例中aa0048

我尝试在 Windows 资源管理器中进行分组和过滤,但效果不佳。有没有其他工具可以为我执行此操作,或者是否有一些 PowerShell/cmd 脚本来进行这些组合并将前 100 对移动到另一个文件夹?

原因是我需要稍后用批处理程序来处理这些文件,但想以 100 个文件为单位进行处理,而不是同时处理所有 25000 个文件,因为这会使我正在处理的系统超载。

答案1

该脚本将移动100个文件(50对)。

根据需要设置$sourceDir和。仅当您满意时,它才会执行您想要的操作(在此之前,它实际上不会移动任何东西;它只会告诉您它会移动什么)。$destDir-WhatIf

我假设要搜索的模式是两个字母数字字符,然后是四个数字 ('\w{2}\d{4}')。如果需要,您可以将其收紧。

$sourceDir = "."
$destDir = "DestDir"
Get-ChildItem $sourceDir | 
    Group-Object -Property { $_ -match '\w{2}\d{4}'; $Matches[0] } | 
    Select-Object -First 100 -ExpandProperty Group | 
    Move-Item -WhatIf -Destination $destDir

相关内容