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

[文本处理] 批处理BAT如何找到指定行并删除行以上文字?

格式如:
123
321
125
236
212
125
323
假如以212为例,找到212这一行,并删除212上面的所有.保留212下面的所有.得出结果如下:
125
323

能否用批处理做到,应该如何做?谢谢各位大大.

如果有多行212,以哪行为准?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

没有多行,只有一行的啊.就是多行没有重复的.

TOP

  1. @echo off
  2. for /f "tokens=1 delims=:" %%a in ('findstr /n "212" "a.txt"') do (
  3.   more +%%a "a.txt"
  4. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不行啊.
提示:-- More (0%) --
然后就不动了.

TOP

回复 5楼 的帖子

把你的a.txt内容贴出来看看?
a.txt是UNICODE编码的话,需要这样:
  1. @echo off
  2. for /f "tokens=1 delims=:" %%a in ('type "a.txt"^|findstr /n "212"') do (
  3.   more +%%a "a.txt"
  4. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我的a.txt不是数字.
caaa
caab
caac
caad
caae
caaf
caag
caah
caai
caaj
caak
caal
caam
caan
caao
caap
caaq
caar
caas
caat
caau
caav
caaw
caax
caay
caaz
caba
cabb
cabc
cabd
cabe
cabf
cabg
cabh
cabi
cabj
cabk
cabl
cabm
cabn
cabo
cabp
cabq
是这种,想中间去掉一个,并把上面的也去掉.
运行了这个批处理,两次得出同一个结果.

TOP

两次运行的结果是什么?是否正确呢?楼上没说清楚呵。其实BATCHER的方法基本能实现你的要求了。只是结果显示在屏幕上而已。稍改一下就可以了。下面再给出我想的一段代码,虽稍繁点,但生成了一个新的A.TXT文件,完全符合你的要求:
  1. @echo off
  2. for /f %%a in ('type a.txt') do (
  3.   if defined flag1 (
  4.     if defined flag2 (>>a.txt echo %%a) else (
  5.       >a.txt echo %%a
  6.       set flag2=1
  7.     )
  8.   )
  9.   if "%%a"=="caae" set flag1=1
  10. )
  11. start a.txt
复制代码

TOP

楼主把要执行的文件保存为b.txt放在目录下,然后执行下面的代码,会在同目录下生成一个f.txt
其中f.txt就是你想要的文件!!
  1. @echo off
  2. set /p w=请输入要删除开始的数:
  3. for /f %%i in (b.txt) do (
  4. set /a a+=1
  5. echo %%i>c.txt
  6. findstr "%w%">nul c.txt&&goto f
  7. )
  8. :f
  9. for /f "skip=%a%" %%b in (b.txt) do (
  10. echo %%b>>f.txt
  11. )
  12. del c.txt
  13. pause
复制代码

TOP

回复 7楼 的帖子

  1. @echo off
  2. for /f "tokens=1 delims=:" %%a in ('type "a.txt"^|findstr /n "212"') do (
  3.   more +%%a "a.txt">"b.txt"
  4.   move /y "b.txt" "a.txt"
  5. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

首先谢谢各位的热心.我现在有空上来试了一下.8楼和9楼的行不通.
十楼的管理员的批处理结果是出来了,但好像不支持大批的.比如几百MB同类的.只显示了58KB的资料.

再次谢谢各位.

TOP

回复 11楼 的帖子

下次提问时,建议在顶楼描述清楚问题背景,10楼的more不适用于大文件。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

根据你所列的a.txt,8楼的代码我测试过的,是行的。
严重建议版主:要求提问者把要处理的源文件上传,或截取一段贴出来。不要重新杜撰一个。

TOP

关于这个问题,如果要取从开始到关键词所在行,批量操作,该怎么做?

TOP

回复 14# zhanglei1371

我也想知道

TOP

返回列表