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

[文本处理] [己解决]批处理去掉文本中的多余内容

一1
丰1112
彗11121112511
熭111211125114334
豔1112211125212514311215425221
豓111221112521251431134425221

以上内容变成:
一1
丰1112
彗11121112511
熭111211125114
豔111221112521
豓111221112521

内容如上,每行都会有中文字符,在中文字符后面都会跟一串数字。
现在想把超过12个数字的只保留前面12个数字(后面数字去掉),
少余12数字(含12数字)的不做改变。
需要:
因为文本很大,请尽可能减少系统资源的占用。
我在用记事本替换功能替换该文本中的字符时会死机。
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

从你提供的样本文件来看,格式都是“一个中文字符+一个空格+数字”
:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (aa.txt) do (
  3.    set "num=%%a"
  4.    echo.!num:~0,14!
  5. ))>tem.txt
  6. start tem.txt
复制代码
技术问题请到论坛发帖求助!

TOP

  1. @echo off
  2. gawk -F":" "{print substr($0,1,15)}" SunWb_MB1.txt>result.txt
复制代码
第三方命令行工具gawk.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

为什么你的代码运行后得到的是,
我已经把文件名改为aa.txt了呀。
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14

TOP

回复 5楼 的帖子

你确定你的代码中有这一句吗?
setlocal enabledelayedexpansion
技术问题请到论坛发帖求助!

TOP

回复 6楼 的帖子

代码是 通过点击“复制内容到剪贴板”得到的 应该不会少掉这一句吧?

TOP

回复 8楼 的帖子

有点怀疑他不是 通过点击“复制内容到剪贴板”得到的代码 ^_^
技术问题请到论坛发帖求助!

TOP

回复 10楼 的帖子

这个的确和预处理有关(比较复杂,有待深入研究),写成7楼那样就没问题。
echo.!num:~0,14! 改成 echo !num:~0,14! 也没问题。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

真的很复杂啊!下面的代码却可以!
  1. @echo off&setlocal EnableDelayedExpansion
  2. set a=123456
  3. (for %%i in (%a%) do (
  4.         set b=%%i
  5.          echo.!b:~3!
  6. ))>tem.txt
复制代码
少了逗号就不出错了!!!

[ 本帖最后由 zjw767676 于 2009-4-19 22:22 编辑 ]
有一种爱叫放弃

TOP

原帖由 Batcher 于 2009-4-13 12:25 发表
@echo off
gawk -F":" "{print substr($0,1,15)}" SunWb_MB1.txt>result.txt第三方命令行工具gawk.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html


Batcher会的很多啊,佩服。
请问这里 -F":" 是起什么作用?好像这样也行:gawk  "{print substr($0,1,14)}" 1.txt

TOP

回复 13楼 的帖子

-F开关用来指定除默认列分隔符之外的其它列分隔符,此例中就是指定以冒号作为列分隔符。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表