搜索

bat批量修改文件名乱码

发表于 2026-10-17 07:04:28 来源:力不从心网

我电脑里存了三百多部纪录片,量修乱码文件名全是改文日文和韩文。某天想整理,量修乱码发现Windows资源管理器里显示正常,改文拷到NAS上全变乱码。量修乱码那感觉就像打开冰箱发现牛奶变成了酸奶——没坏,改文但没法喝。量修乱码

问题出在编码上。改文日文文件名在Windows里用的量修乱码是Shift-JIS,韩文用EUC-KR。改文NAS和大部分Linux系统默认UTF-8。量修乱码bat脚本调用rename命令时,改文系统按当前代码页解释字符,量修乱码代码页不对,改文名字就歪了。量修乱码

网上搜到的解决方案多半是让你用PowerShell,或者装第三方工具。但我就想用一个.bat文件解决,双击完事。折腾了一下午,试了七八种写法,最后发现一个关键点:bat文件本身必须保存为ANSI编码,且代码页要和目标文件名一致。

具体做法分两步。第一步,在bat开头写上chcp 932(日文代码页)或chcp 949(韩文代码页),告诉系统“接下来我要用日文/韩文规则解释字符”。第二步,用for循环遍历文件,配合ren命令改名字。注意,bat文件保存时选“ANSI”而不是“UTF-8”,否则中文字符串会变成问号。

举个例子。我的文件叫【NHK】海の向こう(第1話).mp4,想改成NHK_海之彼岸_第01集.mp4。bat里这样写:

@echo off chcp 932 >nul setlocal enabledelayedexpansion for %%f in (*.mp4) do ( set "name=%%~nf" set "name=!name:【NHK】=NHK_!" set "name=!name:海の向こう=海之彼岸!" set "name=!name:(第=第0!" set "name=!name:話)=集!" ren "%%f" "!name!%%~xf" ) 

这里chcp 932把代码页切到日文,!name:旧=新!是变量替换。注意括号和全角符号必须原样匹配,少一个空格都不行。跑完一看,文件名整整齐齐。

但这招只对日韩文有效。碰到泰文、阿拉伯文,代码页又不一样(泰文是874,阿拉伯文是1256)。更麻烦的是,如果你文件名里混着中日韩三种文字,一个代码页搞不定。这时候别硬扛,老老实实改用PowerShell,用[System.Text.Encoding]::GetEncoding指定编码读取旧文件名,再转成UTF-8写新名。

有个坑必须提醒你。bat文件如果从网上下载或者从微信传过来,可能被强制转成UTF-8。你可以在记事本里打开,另存为时选“ANSI”。要是保存选项里没有ANSI,说明系统区域设置不对——去控制面板把“非Unicode程序的语言”改成日语或韩语,重启后再试。

最后说个玄学。同样一段代码,在Win10上跑得好好的,换到Win7就乱。原因是Win7的cmd默认代码页是936(简体中文),Win10改成了65001(UTF-8)。所以脚本开头加chcp不是可选项,是必选项。我吃过这个亏,那次批量改完,五十个文件全变成“锟斤拷”开头——懂的人知道那是什么滋味。

现在我的纪录片都整理好了,文件名规规矩矩的英文加数字。偶尔想起那下午的折腾,觉得bat这东西就像把瑞士军刀——能削苹果也能撬轮胎,但你得知道刀刃往哪边使。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by bat批量修改文件名乱码,力不从心网   sitemap

回顶部