如何在PowerShell中提取文件名第二个三元组并实现XML归档
在PowerShell中解析文件名并提取第二个三元组,实现归档逻辑
没问题,我来帮你搞定这个需求!首先得明确你的文件名格式,我分两种常见情况来给出解决方案,最后再整合归档的完整逻辑。
情况1:文件名用分隔符(如-/_)分隔成多个部分,第二个部分是三元组
比如文件名格式是 前缀-三元组1-三元组2-后缀.xml,或者 group-ABC-123-data.xml(这里ABC是第二个三元组)。
提取第二个三元组的代码示例
# 示例文件名 $fileName = "sales-DEF-2024-Q1.xml" # 1. 获取不带扩展名的文件名 $fileNameNoExt = [System.IO.Path]::GetFileNameWithoutExtension($fileName) # 2. 按分隔符分割(这里用`-`,如果是下划线就换成`_`) $parts = $fileNameNoExt -split '-' # 3. 提取第二个部分(PowerShell数组索引从0开始,所以取索引1) $secondTrigram = $parts[1] # 输出结果 Write-Host "提取到的第二个三元组:$secondTrigram"
运行这段代码会输出 DEF,就是我们要的目标值。
情况2:文件名是连续字符,每3个字符为一个三元组
比如文件名格式是 AAABBBCCC.xml(这里第二个三元组是BBB)。
提取第二个三元组的代码示例
# 示例文件名 $fileName = "AAABBBCCC.xml" # 1. 获取不带扩展名的文件名 $fileNameNoExt = [System.IO.Path]::GetFileNameWithoutExtension($fileName) # 2. 提取第4-6个字符(索引从0开始,所以起始位置是3,长度3) $secondTrigram = $fileNameNoExt.Substring(3, 3) # 输出结果 Write-Host "提取到的第二个三元组:$secondTrigram"
这段代码会输出 BBB,符合预期。
完整归档逻辑:自动分组XML文件并创建对应归档
现在把提取逻辑和归档操作结合起来,实现自动遍历XML文件、按第二个三元组分组、创建对应Zip归档并移入文件的功能:
# 导入压缩模块(PowerShell 5.1及以上自带) Import-Module Microsoft.PowerShell.Archive # 目标文件夹(替换成你的XML文件所在路径) $targetDir = "C:\Your\XML\Files\Path" # 获取所有XML文件 $xmlFiles = Get-ChildItem -Path $targetDir -Filter "*.xml" # 按第二个三元组分组 $groupedFiles = $xmlFiles | Group-Object -Property { $fileNameNoExt = [System.IO.Path]::GetFileNameWithoutExtension($_.Name) # 这里根据你的文件名格式选择分割方式: # 情况1:分隔符分割 $parts = $fileNameNoExt -split '-' return $parts[1] # 情况2:连续三元组的话,替换成下面这行: # return $fileNameNoExt.Substring(3, 3) } # 遍历每个分组,创建归档并移入文件 foreach ($group in $groupedFiles) { $trigram = $group.Name $archivePath = Join-Path -Path $targetDir -ChildPath "$trigram.zip" # 创建或更新Zip归档 Compress-Archive -Path $group.Group.FullName -DestinationPath $archivePath -Update # 可选:如果需要把原文件从文件夹移除,取消下面这行注释 # Remove-Item -Path $group.Group.FullName -Force Write-Host "已将$($group.Count)个文件归档到:$archivePath" }
注意事项
- 请根据你的实际文件名格式,在分组逻辑里选择对应的提取方式(情况1或情况2)
Compress-Archive的-Update参数会自动添加新文件到已有归档,不会覆盖原有内容- 如果需要删除原文件,取消
Remove-Item那行的注释即可
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

