标题: [文本处理] [已解决]bat在读取非ANSI格式的文本时的问题 [打印本页]
作者: iq301 时间: 2014-6-20 23:19 标题: [已解决]bat在读取非ANSI格式的文本时的问题
本帖最后由 iq301 于 2014-6-22 18:20 编辑
bat在读取非ANSI格式的文本时,没有数值输出,我试过用finstr type more 都不行,
附件599.txt是从LINUX服务器生成的文本,在for里面运行以下bat,会读取不了。
@echo off& setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%a in ('findstr . G:\bat\599.txt') do (
set a=%%a&set a=!a:008C= !
set b==!a:telepath= !
set c==!b:08C= !
set d==!c:01101C= !
set aa=!d:100C= success !
for /f "tokens=1,2,3,4,5,6 delims= " %%e in ("!aa!") do (
echo %%f %%h %%i %%j
)
) >>g:\bat\5.txt
endlocal
pause
请教一:bat在读取非ANSI格式的文本时,如果修改里面的内容,会直接导致文本排序很乱,有没方法可以把非ANSI格式的文本转换成ANSI格式的文本
二:以上代码在把599.txt最后一行的空行删除或随意修改一下,就能读取到,这是为何?
作者: Batcher 时间: 2014-6-20 23:34
- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%a in ('more 599.txt ^| findstr "telepath"') do (
- set a=%%a
- set a=!a:008C= !
- set b==!a:telepath= !
- set c==!b:08C= !
- set d==!c:01101C= !
- set aa=!d:100C= success !
- for /f "tokens=1-6" %%e in ("!aa!") do (
- echo %%f %%h %%i %%j
- )
- ))>599_new.txt
复制代码
作者: iq301 时间: 2014-6-20 23:51
回复 2# Batcher
谢谢,其实这问题之前已请教过,但是我就是找不出原因在哪。为什么findstr会读不出
作者: Batcher 时间: 2014-6-21 00:21
回复 3# iq301
没有为什么,它就是不支持那种格式。
作者: CrLf 时间: 2014-6-21 00:49
这不是编码的问题,是行结束符的问题
不含宽字符的无 BOM utf-8 与 ansi 无区别
作者: iq301 时间: 2014-6-21 12:55
嗯,谢谢你们的帮助。
作者: PowerShell 时间: 2014-6-21 13:03
本人拙帖 《面向对象之妙》系列的第五季,《powershell占用内存之妙》中,http://www.bathome.net/thread-30621-1-1.html
说明了 powershell为什么是处理unicode最好的脚本语言!没有之一。你用它解决你的问题最简单。
简单来说,powershell对 编码,换行,识别的妙。
作者: CrLf 时间: 2014-6-21 18:22
本帖最后由 CrLf 于 2014-6-21 18:41 编辑
gawk:- gawk "{gsub(/008C|telepath|08C|01101C/,\" \");gsub(/100C/,\"success \");$1=$1;printf(\" %s %s %s %s\n\",$2,$4,$5,$6);exit}" 599.txt>599_修改.txt
复制代码
perl:- open(IN,'599.txt');
- open(OUT, ">599_修改.txt");
-
- foreach(<IN>){
- $_ =~ s/008C|telepath|08C|01101C/ /ig;
- $_ =~ s/100C/ success /ig;
- @a = split;
- printf(OUT " %s %s %s %s\n",
- @a[1],@a[3],@a[4],@a[5]);
- }
复制代码
作者: iq301 时间: 2014-6-22 18:19
thank you very much~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |