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

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

[复制链接]
发表于 2016-4-12 07:02:09 | 显示全部楼层 |阅读模式
本帖最后由 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,并解决中文乱码问题。
谢谢!
发表于 2016-4-12 08:24:35 | 显示全部楼层
改用PowerShell试试吧
 楼主| 发表于 2016-4-12 20:36:33 | 显示全部楼层
回复 2# gawk

看来这是批处理固有的缺陷,只能退而求其次。先将源文件改为GB2312,处理后再改回来。谢谢了!!!
发表于 2016-4-12 22:47:09 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2016-4-12 23:01:58 | 显示全部楼层
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')
复制代码
发表于 2016-4-12 23:13:59 | 显示全部楼层
嗯哼,是的,批处理:
  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
复制代码
发表于 2016-4-13 00:25:46 | 显示全部楼层
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技术 +1 收起 理由
happy886rr + 1 还能这样玩!

查看全部评分

 楼主| 发表于 2016-4-13 14:29:06 | 显示全部楼层
真是太受益了,谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 19:59 , Processed in 0.021318 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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