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

通过PowerShell批量给.msg文件添加序号前缀的问题求助

问题排查与脚本修正

原脚本的错误点

  1. @运算符滥用:@Get-ChildItem是语法错误,PowerShell中@用于定义数组或参数展开,这里直接用Get-ChildItem即可,无需额外加@。
  2. 文件名模板不符合需求:原脚本的"{0:000#}_$($_.directory.name).msg"会生成类似0001_文件夹名.msg的文件名,完全替换了原文件名,和你要的「数字前缀+原文件名」的效果不符。
  3. 序号格式适配问题:超过1500个文件时,用0001这类四位数字前缀能避免排序混乱(比如10不会排在2前面)。

修正后的单文件夹处理脚本

如果是在目标文件夹内运行脚本,使用以下代码:

$i = 1
Get-ChildItem -Filter *.msg | ForEach-Object {
    # 生成四位数字前缀+原文件名的新名称
    $newName = "{0:D4}{1}" -f $i++, $_.Name
    Rename-Item -Path $_.FullName -NewName $newName
}
  • 若不需要四位数字,只想用纯数字(比如1、2...1501),把{0:D4}改成{0}即可。
  • 可以先添加-WhatIf参数测试重命名效果,不会实际修改文件:Rename-Item -Path $_.FullName -NewName $newName -WhatIf

批量处理两个文件夹的脚本

如果想一次性处理指定的两个文件夹,使用以下代码:

# 指定两个文件夹的路径
$folders = "C:\Folder1", "C:\Folder2"

foreach ($folder in $folders) {
    $i = 1
    Get-ChildItem -Path $folder -Filter *.msg | ForEach-Object {
        $newName = "{0:D4}{1}" -f $i++, $_.Name
        Rename-Item -Path $_.FullName -NewName $newName
    }
}

注意事项

  • 运行脚本前建议备份文件,避免意外损失。
  • 如果遇到权限问题,右键以管理员身份运行PowerShell即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:24:22