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

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

本帖最后由 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,并解决中文乱码问题。
谢谢!

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

TOP

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
1

评分人数

TOP

嗯哼,是的,批处理:
  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
复制代码

TOP

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')
复制代码

TOP

本帖最后由 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
复制代码

TOP

回复 2# gawk

看来这是批处理固有的缺陷,只能退而求其次。先将源文件改为GB2312,处理后再改回来。谢谢了!!!

TOP

改用PowerShell试试吧
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表