找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 2004|回复: 8

[文本处理] [已解决]批处理将当前目录及子目录下的 HTM 文件重命名

[复制链接]
发表于 2025-9-25 12:44:34 | 显示全部楼层 |阅读模式
求批处理:将所有当前目录及子目录下的所有 *.htm 文件重命名为 *.htm.utf8,则每个 htm 文件添加后缀 .utf8。谢谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2025-9-25 12:53:17 | 显示全部楼层
本帖最后由 chishingchan 于 2025-9-25 12:57 编辑

我真正的需求其实是:
1、将当前目录及子目录下的所有 *.htm 文件使用 coder.exe 命令行软件从 ANSI 重新编码为 utf-8(*.htm.utf8);
2、然后使用 Opencc.exe 命令行软件将 *.htm.utf8 从简体中文转换到繁体中文;
3、删除当前目录及子目录下的所有 *.htm 文件;
4、重命名 *.htm.utf-8 为 *.htm。
5、(可选)将 *.htm 使用 coder.exe 命令行软件重新编码为 ANSI。

解决 1 楼的批处理后再自己添加相关命令行就好。
发表于 2025-9-25 13:37:38 | 显示全部楼层
Get-ChildItem -Path . -Recurse -Filter *.htm | ForEach-Object {Rename-Item -Path $_.FullName -NewName ($_.FullName -Replace $_.Extension,"$($_.Extension).utf8")}
发表于 2025-9-25 13:57:47 | 显示全部楼层
回复 1# chishingchan

  1. @echo off &for /r %%F in (*.*) do ren "%%F" "%%~nxF.utf8"
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢!

查看全部评分

发表于 2025-9-25 15:25:10 | 显示全部楼层
回复 2# chishingchan

楼主如已预装 powershell 也许可简化上述五步流程,以下是用批处脚本调用 powershell 完成 '繁转简' 和 '简转繁' 的四个示例代码,其中假定 tc.txt 是包含繁体字数据的文件,sc.txt 是包含简体字数据的文件,输入和输出文件编码须用参数 -enc utf8 或 -enc default 指定,前者为 utf-8 编码文件,后者为 ansi(即 gb2312)编码文件。

一。简转繁(输入输出文件皆为 ansi 即 gb2312 编码

  1. @echo off &powershell -c "add-type -assemblyname microsoft.visualbasic;[microsoft.visualbasic.strings]::strconv((gc 'sc.txt' -raw -enc default),[microsoft.visualbasic.vbstrconv]::traditionalChinese)|sc 'tc.txt' -enc default" &pause&exit/b
复制代码
二。繁转简(输入输出文件皆为 ansi 即 gb2312 编码

  1. @echo off &powershell -c "add-type -assemblyname microsoft.visualbasic;[microsoft.visualbasic.strings]::strconv((gc 'tc.txt' -raw -enc default),[microsoft.visualbasic.vbstrconv]::simplifiedChinese)|sc 'sc.txt' -enc default" &pause&exit/b
复制代码
三。简转繁(输入输出文件皆为 utf-8 编码

  1. @echo off &powershell -c "add-type -assemblyname microsoft.visualbasic;[microsoft.visualbasic.strings]::strconv((gc 'sc.txt' -raw -enc utf8),[microsoft.visualbasic.vbstrconv]::traditionalChinese)|sc 'tc.txt' -enc utf8" &pause&exit/b
复制代码
四。繁转简(输入输出文件皆为 utf-8 编码

  1. @echo off &powershell -c "add-type -assemblyname microsoft.visualbasic;[microsoft.visualbasic.strings]::strconv((gc 'tc.txt' -raw -enc utf8),[microsoft.visualbasic.vbstrconv]::simplifiedChinese)|sc 'sc.txt' -enc utf8" &pause&exit/b
复制代码
以上代码中的输入文件和输出文件的编码不一致时,可用参数 -enc default 或 -enc utf8 分别调整...
 楼主| 发表于 2025-9-25 15:29:59 | 显示全部楼层
回复 4# aloha20200628


    好神奇的批处理!我还以为要两次 for 呢?!谢谢!
 楼主| 发表于 2025-9-25 15:39:57 | 显示全部楼层
回复 5# aloha20200628


    请问这个方法能处理地域用詞轉換吗?
例如:程序 <-> 程式
发表于 2025-9-25 15:51:39 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-9-25 16:02 编辑

回复 7# chishingchan

这是词义映射(可能需要专业数据库支持),不是简单的文件字符集编码转换问题了
5楼示例代码的可参考价值是将 '繁简转换与文件编码转换' 毕其功于一役...
 楼主| 发表于 2025-9-25 16:11:19 | 显示全部楼层
本帖最后由 chishingchan 于 2025-9-25 16:13 编辑

回复 8# aloha20200628


    给老大推荐支持这个转换的 OpenCC!修改老大的脚本为:
  1. @echo off
  2. cd /d %~dp0
  3. set OpenCC=H:\Program Files\OpenCC
  4. for /r %%F in (*.utf8) do "%OpenCC%\OpenCC.exe" -i "%%F" -o "%%~npF" -c "%OpenCC%\s2twp.json"
复制代码
老大的脚本真的给我震惊!再次感谢!
  1. for /r %%F in (*.*) do
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:05 , Processed in 0.017763 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表