标题: [文本处理] 如何根据指定文本中的行间规律将段落分别写进不同的txt中 [打印本页]
作者: smallming 时间: 2017-7-20 21:14 标题: 如何根据指定文本中的行间规律将段落分别写进不同的txt中
本帖最后由 pcl_test 于 2017-7-21 04:29 编辑
如何用bat 提取1.txt中两个指定字符串之间的内容然后分别生成到不同txt 中
text.txt文本内容如下:
>>IN 1111
222
>>IN 333
444
>>IN 555
666
>>IN 777
888
888
>>IN 654
999999
我想把
>>IN 1111
222 生成到a.txt
把
>>IN 333
444 生成到b.txt
把
>>IN 555
666 生成到c.txt
把
>>IN 777
888 生成到d.txt
依次类推,请教大家。
作者: smallming 时间: 2017-7-20 21:24
和这个问题很类似,但我的txt中需要重复提取行与行之间内容,并且文件名有变化。
http://www.bathome.net/thread-26239-1-1.html
作者: taofan712 时间: 2017-7-20 21:31
用递增数字做文件名岂不是很简单,非要用abcd...- @echo off
- setlocal enabledelayedexpansion
- cd /d %~dp0
- for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
- set /a n+=1
- set #!n!=%%a
- )
- for /f "delims=" %%a in (test.txt) do (
- for /f %%b in ("%%a") do (
- if "%%b"==">>IN" (
- call :cn fn
- echo;%%a>>!fn!.txt
- ) else (
- echo;%%a>>!fn!.txt
- )
- )
- )
- echo;处理完毕&pause>nul&exit /b
-
- :cn
- set /a m+=1
- for /f "tokens=2 delims==" %%i in ('set #^|findstr "#!m!="') do set fn=%%i
- endlocal &set %~1=!fn! &goto :eof
复制代码
作者: qazplm 时间: 2017-7-21 09:52
本帖最后由 qazplm 于 2017-7-21 12:38 编辑
回复 3# taofan712
没错,要超过26段怎么办?所以要将楼主的思维强制“掰弯”,懂的不应该被不懂的带错了道
另外,如果真要用字母,可以用偏移法,就不需要call和findstr拖累效率了- setlocal enabledelayedexpansion
- set s=abcdefghijklmnopqrstuvwxyz
- set n=0
- for /f "delims=" %%a in ('type "test.txt"') do (
- for /f %%b in ("%%a") do (
- if "%%b" equ ">>IN" (
- for %%i in (!n!) do set "fn=!s:~%%i,1!.txt"
- set /a n+=1
- )
- >>"!fn!" echo;%%a
- )
- )
复制代码
作者: smallming 时间: 2017-7-21 11:11
谢谢两位 3L代码已经解决了我的问题 用字母做名字更方便后续工作
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |