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

PowerShell批量重命名脚本处理é等特殊字符时出现乱码如何解决

问题原因

你遇到的乱码是字符编码不匹配导致的,café转换为café是典型的UTF-8编码文本被误以ANSI编码读取的表现:

  • 你保存文件名列表的names.txt是UTF-8编码格式
  • Windows系统自带的PowerShell 5.1及更早版本,默认使用系统本地ANSI编码读取文本文件,不会自动识别UTF-8编码,所以特殊字符读取后就会出现乱码
  • 该问题和你替换的Path/LiteralPath参数无关,所以修改后无法解决问题
可行解决方案

方案1:给Get-Content指定读取编码(最简便,无需改动环境)

只需要在读取txt文件的命令后加-Encoding UTF8参数,明确告知PowerShell用UTF-8编码读取文件即可,修改后的完整脚本如下:

# 读取文件名时指定UTF-8编码
$names = Get-Content -Path "C:\Users\user1\OneDrive\Desktop\locationForNames\names.txt" -Encoding UTF8
$files = Get-ChildItem -Path "C:\Users\user1\OneDrive\Desktop\filesToRename"
for($i = 0; $i -lt $names.Length; $i++){
    $newname = $names[$i]
    Rename-Item $files[$i].FullName -NewName $newname -Force
}

补充说明:如果你的names.txt是用Windows记事本默认保存的ANSI编码,把上述参数改为-Encoding Default即可。你可以通过记事本打开txt文件→「文件」→「另存为」,查看底部的编码下拉框确认文件实际编码。

方案2:升级到PowerShell 7.x(适合长期使用PowerShell的场景)

PowerShell 7及以上的新版本默认所有文本读写操作都采用UTF-8编码,无需额外指定编码参数也不会出现这类乱码问题,兼容性和功能也比旧版本更强。

附加注意事项

你当前的脚本是按照文件列表的索引顺序一一对应重命名,运行前请确认:

  • names.txt的行数和待重命名文件夹内的文件总数完全一致
  • 待重命名文件夹内的文件排序和names.txt里的文件名顺序完全匹配
    避免出现下标越界、重命名错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:06