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

[文本处理] [已解决]求UTF-8文件添加BOM头的批处理脚本

[复制链接]
发表于 2019-8-24 20:57:52 | 显示全部楼层 |阅读模式
原文件 UTF-8格式

求添加BOM的批处理

评分

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

查看全部评分

发表于 2019-8-24 22:01:56 | 显示全部楼层
添加BOM头
  1. powershell "[System.IO.File]::WriteAllBytes(目标文件,[byte[]](239,187,191)+[System.IO.File]::ReadAllBytes(源文件))"
复制代码
发表于 2019-8-24 22:42:33 | 显示全部楼层
  1. @echo off
  2. set "filepath=e:\test\[1-9].txt"
  3. Powershell -NoProfile -Command "Get-ChildItem -Path "%filepath%"|ForEach-object {$arr = Get-Content -ReadCount 0 -Path $_ -Encoding utf8 ; Set-Content -Value $arr -Path $_ -Encoding utf8}"
  4. pause
  5. exit /b
复制代码
 楼主| 发表于 2019-8-25 11:19:47 | 显示全部楼层
回复 3# flashercs


   可以用了 谢谢
 楼主| 发表于 2019-8-25 11:24:27 | 显示全部楼层
回复 2# ivor


不知道哪里写错了
发表于 2019-8-25 14:08:53 | 显示全部楼层
回复 5# zhaosiyu2010


    文件路径加引号''
 楼主| 发表于 2019-8-26 12:20:51 | 显示全部楼层
回复 6# ivor


    谢谢  谢谢
 楼主| 发表于 2019-8-26 12:22:35 | 显示全部楼层
回复 3# flashercs


    麻烦 再帮忙看下哈
这条语句处理后  在文件末尾 加了一个空行
可以不让它加空行么
发表于 2019-8-26 13:20:42 | 显示全部楼层
本帖最后由 flashercs 于 2019-8-26 13:38 编辑

回复 8# zhaosiyu2010
  1. @echo off
  2. set "filepath=e:\test\[1-9].txt"
  3. Powershell -NoProfile -Command "Get-ChildItem -Path "%filepath%" | ForEach-object { [System.IO.File]::WriteAllText($_.FullName, [System.IO.File]::ReadAllText($_.FullName, [System.Text.UTF8Encoding]::UTF8), (New-Object System.Text.UTF8Encoding -ArgumentList $true)) }"
  4. pause
  5. exit /b
复制代码
 楼主| 发表于 2019-8-26 17:11:30 | 显示全部楼层
回复 9# flashercs


    6666666    可以了 ,  谢谢哈
 楼主| 发表于 2019-12-4 10:04:58 | 显示全部楼层
本帖最后由 zhaosiyu2010 于 2019-12-4 10:06 编辑

回复 9# flashercs


    老哥,在帮下忙,  你的这段加BOM头的命令,我批处理是Windows(CRLF)  带有BOM的UTF-8模式下  使用命令是可以的。

但是我把批处理,改成ANSI编码格式后 执行这个命令,转换出来的文件,虽然格式显示是正确的,但是里面内容却乱码了。。。
发表于 2019-12-4 10:26:08 | 显示全部楼层
本帖最后由 flashercs 于 2019-12-4 10:44 编辑

回复 11# zhaosiyu2010
  1. @echo off
  2. set "filepath=C:\Users\*.txt"
  3. REM srcEncoding=UTF8 or Default
  4. set srcEncoding=Default
  5. Powershell -NoProfile -Command "$srcEncoding=[System.Text.Encoding]::%srcEncoding%;$utf8bom=New-Object System.Text.UTF8Encoding -ArgumentList $true;Get-ChildItem -Path "%filepath%" | ForEach-Object { [System.IO.File]::WriteAllText($_.FullName, [System.IO.File]::ReadAllText($_.FullName, $srcEncoding), $utf8bom) }"
  6. pause
  7. exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2019-12-4 10:30:20 | 显示全部楼层
回复 12# flashercs


    可以了 ,谢谢,谢谢
发表于 2023-9-12 16:05:22 | 显示全部楼层
# 方法1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "OldFile=1.txt"
  4. set "NewFile=2.txt"
  5. >"%temp%\BOM.tmp" echo 77u/
  6. certutil -decode -f "%temp%\BOM.tmp" "%NewFile%" >nul
  7. >>"%NewFile%" type "%OldFile%"
复制代码
# 方法2.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "OldFile=1.txt"
  4. set "NewFile=2.txt"
  5. powershell "[System.IO.File]::WriteAllBytes('%NewFile%',[byte[]](239,187,191)+[System.IO.File]::ReadAllBytes('%OldFile%'))"
复制代码
# 方法3.bat
http://bcn.bathome.net/s/tool/index.html?key=sed
  1. @echo off
  2. cd /d "%~dp0"
  3. set "OldFile=1.txt"
  4. set "NewFile=2.txt"
  5. sed.exe "1s/^/\xEF\xBB\xBF/" "%OldFile%" > "%NewFile%"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:30 , Processed in 0.024009 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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