找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18338|回复: 6

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

[复制链接]
发表于 2023-4-14 12:45:08 | 显示全部楼层 |阅读模式
本帖最后由 liziyunabcd 于 2023-4-14 14:33 编辑

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

TXT内容如下:

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

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

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-4-14 12:52:24 | 显示全部楼层
  1. findstr /b "[1-9][0-9]*、" 1.txt>2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
liziyunabcd + 1 牛逼~大佬。

查看全部评分

 楼主| 发表于 2023-4-14 13:01:27 | 显示全部楼层
回复 2# qixiaobin0715

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

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

因为这个文本里还有其他的1、2、3、的编号.
 楼主| 发表于 2023-4-14 13:41:12 | 显示全部楼层
刘得发:
1、《峰回路转》
2、《孤星泪》
3、《相思成灾》
刘得发是香港人,歌手,演员。
张学友
1、情网:
2、问你爱我有多情
3、情深深雨蒙蒙。
张学友是香港人,歌手,演员。


文本大概是这样子
发表于 2023-4-14 14:03:17 | 显示全部楼层
回复 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技术 +1 收起 理由
liziyunabcd + 1 感谢管理员老大!!太牛逼了

查看全部评分

发表于 2023-4-14 14:12:39 | 显示全部楼层
回复 4# liziyunabcd


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

评分

参与人数 1技术 +1 收起 理由
liziyunabcd + 1 谢谢老大!牛逼!!

查看全部评分

发表于 2023-4-14 15:15:24 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 23:29 , Processed in 0.015381 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表