[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何将txt文件utf-16LE编码改成UTF-8编码?

如何将txt文件utf-16LE编码改成UTF-8编码

回复 1# Cypher


V1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. powershell "Get-ChildItem *.txt | ForEach-Object {$NewName = $_.Basename + 'New' + $_.Extension; Get-Content $_ | Out-File -Encoding UTF8 $NewName}"
复制代码
测试代码之前请做好备份

TOP

本帖最后由 aloha20200628 于 2024-3-7 18:37 编辑

回复 1# Cypher

以下代码存为test.bat运行,结果生成utf-8无头标编码文件
考虑若完成批量转码,故代码采用ps读写方法中效率最高的[io.file]系列函数
第2行中目标文件(预设D:\txt\*.txt)其路径和文件类型可被修改,多个双引号包裹变量以便其中可含空格
第3行中预设输入编码 inEnc = unicode 其可覆盖 utf-16LE/utf-16BE编码(用于本帖楼主需求);
若 inEnc = default 其可覆盖简中编码(gbk/gb2312)完成简中编码文件转码为utf-8无头标编码文件
  1. @echo off &setlocal
  2. set "tFiles=D:\txt\*.txt"
  3. set "inEnc=unicode"
  4. powershell "$listF=& cmd /c dir/b/s/a-d """%tFiles%"""; foreach ($F in $listF) { $FF=$F+'.new'; $s=[io.file]::readalltext($F,[text.encoding]::%inEnc%);[io.file]::writeAlllines($FF,$s) }"
  5. endlocal&exit/b
复制代码

TOP

回复 1# Cypher
论坛里有这个第三方工具很好用http://www.bathome.net/viewthrea ... amp;highlight=coder

TOP

返回列表