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

[文本处理] [已解决]求助批处理截取TXT指定内容

本帖最后由 liziyunabcd 于 2023-4-14 14:33 编辑

求助:截取指定内容下面有编号的行、段落,把这些内容另存为 "原来的TXT名子"+新的.txt。 这个新的TXT就生成在原来TXT边上。

TXT内容如下:

张学友
1、情网:
2、问你爱我有多情
3、情深深雨蒙蒙。
张学友是香港人,歌手,演员。   

截取后的内容为:
1、情网:
2、问你爱我有多情
3、情深深雨蒙蒙。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、
崩溃了,我用AI生成了最少十几次,没一次成功的,不得不来求助大神们了。
1

评分人数

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

  1. findstr /b "[1-9][0-9]*、" 1.txt>2.txt
复制代码
1

评分人数

TOP

回复 2# qixiaobin0715

上面的代码真牛逼啊,一下把所有的编号都搜出来了

    卧槽.....  牛逼,可以呀.一下就出来了,大神,能不能加个搜索呢,搜索那个关键词“张学友”。

因为这个文本里还有其他的1、2、3、的编号.

TOP

刘得发:
1、《峰回路转》
2、《孤星泪》
3、《相思成灾》
刘得发是香港人,歌手,演员。
张学友
1、情网:
2、问你爱我有多情
3、情深深雨蒙蒙。
张学友是香港人,歌手,演员。


文本大概是这样子

TOP

回复 4# liziyunabcd
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=:" %%i in ('findstr /n /b "张学友" "1.txt"') do (
  4.     if not defined RowFlag (
  5.         set "RowBegin=%%i"
  6.         set "RowFlag=1"
  7.     ) else (
  8.         set "RowEnd=%%i"
  9.     )
  10. )
  11. call :GetList %RowBegin%
  12. exit /b
  13. :GetList
  14. (for /f "skip=%1 tokens=1* delims=:" %%a in ('findstr /n .* "1.txt"') do (
  15.     if %%a equ %RowEnd% (
  16.         exit /b
  17.     ) else (
  18.         echo,%%b
  19.     )
  20. ))>"2.txt"
复制代码
1

评分人数

    • liziyunabcd: 感谢管理员老大!!太牛逼了技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# liziyunabcd


调用第三方命令行工具 sed.exe 比较简洁
http://bcn.bathome.net/s/tool/index.html?key=sed
  1. sed "/张学友/,/张学友/!d" 1.txt | findstr /v "张学友" > 2.txt
复制代码
1

评分人数

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

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1* delims=、" %%i in (1.txt) do (
  4.     if defined n (
  5.         set /a n+=1
  6.         if %%i equ !n! (echo,%%i、%%j) else set n=
  7.     ) else (
  8.         if %%i equ 张学友 set n=0
  9.     )
  10. ))>2.txt
  11. pause
复制代码

TOP

返回列表