标题: [文本处理] [已解决]求UTF-8文件添加BOM头的批处理脚本 [打印本页]
作者: zhaosiyu2010 时间: 2019-8-24 20:57 标题: [已解决]求UTF-8文件添加BOM头的批处理脚本
原文件 UTF-8格式
求添加BOM的批处理
作者: ivor 时间: 2019-8-24 22:01
添加BOM头- powershell "[System.IO.File]::WriteAllBytes(目标文件,[byte[]](239,187,191)+[System.IO.File]::ReadAllBytes(源文件))"
复制代码
作者: flashercs 时间: 2019-8-24 22:42
- @echo off
- set "filepath=e:\test\[1-9].txt"
- Powershell -NoProfile -Command "Get-ChildItem -Path \"%filepath%\"|ForEach-object {$arr = Get-Content -ReadCount 0 -Path $_ -Encoding utf8 ; Set-Content -Value $arr -Path $_ -Encoding utf8}"
- pause
- exit /b
复制代码
作者: zhaosiyu2010 时间: 2019-8-25 11:19
回复 3# flashercs
可以用了 谢谢
作者: zhaosiyu2010 时间: 2019-8-25 11:24
回复 2# ivor
不知道哪里写错了
作者: ivor 时间: 2019-8-25 14:08
回复 5# zhaosiyu2010
文件路径加引号''
作者: zhaosiyu2010 时间: 2019-8-26 12:20
回复 6# ivor
谢谢 谢谢
作者: zhaosiyu2010 时间: 2019-8-26 12:22
回复 3# flashercs
麻烦 再帮忙看下哈
这条语句处理后 在文件末尾 加了一个空行
可以不让它加空行么
作者: flashercs 时间: 2019-8-26 13:20
本帖最后由 flashercs 于 2019-8-26 13:38 编辑
回复 8# zhaosiyu2010 - @echo off
- set "filepath=e:\test\[1-9].txt"
- 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)) }"
- pause
- exit /b
复制代码
作者: zhaosiyu2010 时间: 2019-8-26 17:11
回复 9# flashercs
6666666 可以了 , 谢谢哈
作者: zhaosiyu2010 时间: 2019-12-4 10:04
本帖最后由 zhaosiyu2010 于 2019-12-4 10:06 编辑
回复 9# flashercs
老哥,在帮下忙, 你的这段加BOM头的命令,我批处理是Windows(CRLF) 带有BOM的UTF-8模式下 使用命令是可以的。
但是我把批处理,改成ANSI编码格式后 执行这个命令,转换出来的文件,虽然格式显示是正确的,但是里面内容却乱码了。。。
作者: flashercs 时间: 2019-12-4 10:26
本帖最后由 flashercs 于 2019-12-4 10:44 编辑
回复 11# zhaosiyu2010 - @echo off
- set "filepath=C:\Users\*.txt"
- REM srcEncoding=UTF8 or Default
- set srcEncoding=Default
- 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) }"
- pause
- exit /b
复制代码
作者: zhaosiyu2010 时间: 2019-12-4 10:30
回复 12# flashercs
可以了 ,谢谢,谢谢
作者: Batcher 时间: 2023-9-12 16:05
# 方法1.bat- @echo off
- cd /d "%~dp0"
- set "OldFile=1.txt"
- set "NewFile=2.txt"
- >"%temp%\BOM.tmp" echo 77u/
- certutil -decode -f "%temp%\BOM.tmp" "%NewFile%" >nul
- >>"%NewFile%" type "%OldFile%"
复制代码
# 方法2.bat- @echo off
- cd /d "%~dp0"
- set "OldFile=1.txt"
- set "NewFile=2.txt"
- 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- @echo off
- cd /d "%~dp0"
- set "OldFile=1.txt"
- set "NewFile=2.txt"
- sed.exe "1s/^/\xEF\xBB\xBF/" "%OldFile%" > "%NewFile%"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |