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

[文本处理] 批处理如何过滤文件中的退格键、回车符?

除第一个外其它字符开头均含有退格键/回车键,无法用FOR,使用type也清除不了,求助!~
要求显示每一行,因为我想提取里面的内容。
以下是举例:
A:  48.2 (48.1) of 260.0 (04:20.0)  0.6%                  
A: 153.2 (02:33.2) of 260.0 (04:20.0)  0.5%                    
我想提取第二个括号内的内容,即48.1和02:33.2,进一步只提取数字,不要标点符号。
文本内基本上都是这种行。

  1. @echo off
  2. for /f "delims=" %%a in ('more   tuigj.txt') do echo %%a
  3. pause
  4. type tuigj.txt
  5. pause
  6. more /T8 /e  tuigj.txt
  7. pause
  8. findstr "[0-9]" tuigj.txt
  9. pause
复制代码

[ 本帖最后由 cjiabing 于 2010-10-11 21:57 编辑 ]

我怎么看不见退格符呢,你是怎么看到的?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,43) do set "b= !b!"   %% 连一块了,找个换行点。 %%
  4. set /p s=<"tuigj.txt"
  5. set "s=!s:%b%=%b%&echo.!"
  6. for /f "delims=" %%a       ^% 如果只需要显示直接用 echo 语句即可。 ^%
  7. in ('cmd /c echo %%s%%')   ^% 要获取每一行供使用,此命令获得输出。 ^%
  8. do echo %%a
  9. pause
复制代码

TOP

  1. sed "s/\(w*%\)/\1\n/g" tuigj.txt
复制代码

TOP

回复 2楼 的帖子

使用系统自带的记事本查看可以看到,用Notepad++看不到的。
晕!~使用上传的附件得,但在原始文件中不得,原始文件基本上都是这些符号,有上千上万行!~
你的那些“^% ”用法很诡异!~学习了!~

TOP

回复 3楼 的帖子

似乎不得!
A:  48.2 (48.1) of 260.0 (04:20.0)  0.6%                  
A: 153.2 (02:33.2) of 260.0 (04:20.0)  0.5%                    
我想提取第二个括号内的内容,即48.1和02:33.2,进一步只提取数字,不要标点符号。
文本内基本上都是这种行。
每个A前面都有一个退格符。
如果不使用第三方更好,我对sed一窍不通呢1~
谢谢。

TOP

所有的行都是以 A: 开头的?

批处理弄出来的是一行,必须有个确定的标识去分开它们。

我这个方法支持的长度有限,还是找找其他办法。

哦,那个不是退格符,而是回车符, 0x0D

[ 本帖最后由 zz100001 于 2010-10-11 12:35 编辑 ]

TOP

获得第一个括号中的内容. 放在bat中:
  1. @echo on
  2. sed "s/\(A:   [0-9]\+.[0-9]\+ (\)\([0-9]\+.[0-9]\+\)\() of [0-9]\+.[0-9]\+ (\)\([0-9]\+.[0-9]\+\)\()  \w\+.\w\+%%\)\( \+\)/\2\n/g" tuigj.txt
  3. @echo off
复制代码
for 赋值:
  1. for /f %%a in ('sed "s/\(A:   [0-9]\+.[0-9]\+ (\)\([0-9]\+.[0-9]\+\)\() of [0-9]\+.[0-9]\+ (\)\([0-9]\+.[0-9]\+\)\()  \w\+.\w\+%%\)\( \+\)/\2\n/g" tuigj.txt') do echo %%a
复制代码

[ 本帖最后由 hfg1977 于 2010-10-11 16:55 编辑 ]

TOP

回复 7楼 的帖子

谢谢了,我这里失败了
  1. sed: couldn't write 1698239 items to stdout: Not enough space
复制代码

TOP

回复 6楼 的帖子

基本上是这样的,对,可能是回车符,呵呵,我不大懂这个符号。
现在先放一放吧,以后有好想法了再处理。

TOP

  1. @set @bat=1 // & cscript -nologo -e:jscript "%~f0" & pause & exit /b
  2. f = "C:\\a b\\tuigj.txt";
  3. fso = new ActiveXObject('Scripting.FileSystemObject');
  4. s = fso.OpenTextFile(f).ReadAll().replace(/\r\n?/g,'\r\n');
  5. fso.OpenTextFile('02.txt',2,true).Write(s);
  6. WScript.Echo(s);
复制代码
1

评分人数

TOP

我来了

帮你顶上去,顺便学习知识
我只是一个爱好者

TOP

回复 10楼 的帖子

你们懂得可真多啊!~偶都不懂VB。
运行了,出现错误:
C:\ddd.bat(4, 1) Microsoft JScript 运行时错误: 错误的文件名或号码?
我改了第二行的路径还是错!~

TOP

回复 5楼 的帖子

能否把所有要求全部更新到顶楼?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12楼 的帖子

f = "C:\\a b\\tuigj.txt";
改成你自己的实际路径
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14楼 的帖子

已经换了,在C盘下,没见得!

TOP

返回列表