Board logo

标题: [文本处理] [已解决]批处理如何实现生成与源文件保持相同编码的目标文件? [打印本页]

作者: qixiaobin0715    时间: 2016-4-12 07:02     标题: [已解决]批处理如何实现生成与源文件保持相同编码的目标文件?

本帖最后由 qixiaobin0715 于 2016-4-14 07:12 编辑

批处理文件如下
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (test.txt) do echo !random:~-1!!random:~-1!#%%i)>$
  3. (for /f "tokens=2 delims=#" %%a in ('sort $') do echo %%a)>result.txt
  4. del $
  5. pause
复制代码
我的源文件编码为UTF-8,处理后的文件变成了GB2312,中文字符乱码。
我想保持处理后的文件编码为UTF-8,并解决中文乱码问题。
谢谢!
作者: gawk    时间: 2016-4-12 08:24

改用PowerShell试试吧
作者: qixiaobin0715    时间: 2016-4-12 20:36

回复 2# gawk

看来这是批处理固有的缺陷,只能退而求其次。先将源文件改为GB2312,处理后再改回来。谢谢了!!!
作者: CrLf    时间: 2016-4-12 22:47

本帖最后由 CrLf 于 2016-4-12 23:20 编辑

powershell:
  1. $text = Get-Content bathome.txt
  2. $text | Get-Random -Count $text.Length | Out-File bathome.txt -Encoding UTF8
复制代码

作者: CrLf    时间: 2016-4-12 23:01

bat+hta
  1. mshta http://bathome.net/s/hta/ iconv.saveText(type('bathome.txt').split('\n').sort(function(){return Math.random()-0.5}).join('\n'),'bathome.txt','utf-8')
复制代码

作者: CrLf    时间: 2016-4-12 23:13

嗯哼,是的,批处理:
  1. @echo off & setlocal enabledelayedexpansion
  2. chcp 437
  3. (for /f "delims=:" %%a in ('findstr /n .* bathome.txt') do (
  4. set /p "text[%%a]="
  5. set "n=%%a"
  6. ))<bathome.txt
  7. set head=!text[1]:~,3!
  8. set text[1]=!text[1]:~3!
  9. (for /l %%a in (1 1 %n%) do (
  10. echo !random:~-1!!random:~-1!!random:~-1!:!text[%%a]!
  11. ))>$
  12. sort $ /o $
  13. for /f %%a in ('copy /z %0 nul') do set Cr=%%a
  14. set /p ^"str={head}!Cr!^
  15. !head!^"<nul >>$
  16. (
  17. findstr /v $ $
  18. for /l %%a in (1 1 %n%) do (
  19. set /p "text[%%a]="
  20. echo;!text[%%a]:~4!
  21. )
  22. )<$ >bathome.txt
  23. del $
  24. pause
复制代码

作者: CrLf    时间: 2016-4-13 00:25

By the way, 在没有带 BOM 文件的情况下,凭空产生 UTF8 文件头的姿势是这样:
  1. @echo off & setlocal enabledelayedexpansion
  2. chcp 437>nul
  3. set $=镳患坷
  4. echo !$:~,1!!$:~2,1!!$:~4,1!http://www.bathome.net/>zzz.txt
  5. pause
复制代码
参考:http://www.bathome.net/thread-12347-1-1.html
作者: qixiaobin0715    时间: 2016-4-13 14:29

真是太受益了,谢谢!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2