标题: [文本处理] [已解决]批处理如何实现生成与源文件保持相同编码的目标文件? [打印本页]
作者: qixiaobin0715 时间: 2016-4-12 07:02 标题: [已解决]批处理如何实现生成与源文件保持相同编码的目标文件?
本帖最后由 qixiaobin0715 于 2016-4-14 07:12 编辑
批处理文件如下- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (test.txt) do echo !random:~-1!!random:~-1!#%%i)>$
- (for /f "tokens=2 delims=#" %%a in ('sort $') do echo %%a)>result.txt
- del $
- 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:- $text = Get-Content bathome.txt
- $text | Get-Random -Count $text.Length | Out-File bathome.txt -Encoding UTF8
复制代码
作者: CrLf 时间: 2016-4-12 23:01
bat+hta- 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
嗯哼,是的,批处理:- @echo off & setlocal enabledelayedexpansion
- chcp 437
-
- (for /f "delims=:" %%a in ('findstr /n .* bathome.txt') do (
- set /p "text[%%a]="
- set "n=%%a"
- ))<bathome.txt
-
- set head=!text[1]:~,3!
- set text[1]=!text[1]:~3!
-
- (for /l %%a in (1 1 %n%) do (
- echo !random:~-1!!random:~-1!!random:~-1!:!text[%%a]!
- ))>$
-
- sort $ /o $
-
- for /f %%a in ('copy /z %0 nul') do set Cr=%%a
-
- set /p ^"str={head}!Cr!^
-
- !head!^"<nul >>$
-
- (
- findstr /v $ $
- for /l %%a in (1 1 %n%) do (
- set /p "text[%%a]="
- echo;!text[%%a]:~4!
- )
- )<$ >bathome.txt
-
- del $
-
- pause
复制代码
作者: CrLf 时间: 2016-4-13 00:25
By the way, 在没有带 BOM 文件的情况下,凭空产生 UTF8 文件头的姿势是这样:- @echo off & setlocal enabledelayedexpansion
- chcp 437>nul
- set $=镳患坷
- echo !$:~,1!!$:~2,1!!$:~4,1!http://www.bathome.net/>zzz.txt
- 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 |