You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PowerShell脚本以移动文件名含共同8位数字序列的文件

实现方案

该需求完全可以实现,只需将原脚本中取文件名前8位字符的逻辑替换为提取文件名中任意位置的连续8位数字序列即可,修改后的脚本及说明如下:

修改后可直接运行的脚本

$destination_folder = "C:\TEMP\DESTINATION"
# 自动创建不存在的目标目录
if (-not (Test-Path -Path $destination_folder -PathType Container)) {
    New-Item -Path $destination_folder -ItemType Directory -Force | Out-Null
}

$filelist = Get-ChildItem -Path "C:\TEMP\ORIGIN" -File -Force -Recurse

$filelist | Group-Object -Property {
    # 正则匹配文件名(不含后缀)中任意位置的连续8位数字
    $match = [regex]::Match($_.BaseName, '\d{8}')
    return $match.Success ? $match.Value : $null
} | Where-Object {
    # 过滤无匹配数字序列、以及仅单文件的分组
    $null -ne $_.Name -and $_.Count -ge 2
} | ForEach-Object {
    # 移动匹配到的所有文件,-Force参数表示重名时直接覆盖
    $_.Group | Move-Item -Destination $destination_folder -Force
}

关键调整说明

  • 用正则表达式\d{8}匹配任意位置的连续8位数字,替代了原脚本固定取前8位字符的逻辑
  • 新增了目标目录自动创建的逻辑,避免目标路径不存在时报错
  • 自动过滤了文件名中不存在8位连续数字的文件,不会参与后续分组移动逻辑

可选调整项

  • 若需要匹配包含后缀的完整文件名中的8位数字,将$_.BaseName替换为$_.Name即可
  • 若不需要重名覆盖,删除Move-Item后的-Force参数即可
  • 建议正式执行前先将Move-Item -Destination $destination_folder -Force替换为Select-Object FullName,预览待移动的文件列表,确认无误后再执行移动操作

内容的提问来源于stack exchange,提问作者Andrea Morresi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:03