如何用bat 提取1.txt中两个指定字符串之间的内容然后分别生成到不同txt

如何用bat 提取1.txt中两个指定字符串之间的内容然后分别生成到不同txt 中

例如:1.txt 得内容是 ,
>>IN 1111
222
>>IN 333
444
>>IN 555
666
>>IN 777
888

我想把
>>IN 1111
222 生成到a.txt

>>IN 333
444 生成到b.txt

>>IN 555
666 生成到c.txt

>>IN 777
888 生成到d.txt

@echo off & title 分割文本 By 依梦琴瑶
cd /d %~dp0
setlocal enabledelayedexpansion

set ABC=abcdefghijklmnopqrstuvwxyz
set Num=0
for /f "delims=" %%a in ('type "1.txt"') do (
    set "Str=%%~a"
    echo !Str:^>=〉! | findstr /i "^〉〉IN" >nul 2>nul && (
        call set Fn=%%ABC:~!Num!,1%%
        (echo !Str:^>=^>!)>"!Fn!.txt"
        set /a Num+=1
    ) || (
        (echo !Str!)>>"!Fn!.txt"
    )
)
pause

追问

你好,不好意思,刚才那个问题让我删除了,因为图片有含敏感信息了

追答

呃呃呃呃呃,,,这你还叫我怎么去测试?

追问

我文本代码发不出来,只能发图片,你还看吗。。。?实在不好意思

追答

照着你之前问题中的图片,写出了1.txt文本,测试后一切正常。

你运行我的脚本,是不是出现了“此时不应有 1>”的提示,由于我不知道日文系统上,怎么翻译的,所以用中文表示了。

追问

嗯嗯对,说1>使用方法不对

追答

好了,我知道问题所在了,这是因为你照着我的代码打的时候输错一个字符了。
echo !Str:^>=〉! | findstr /i "^〉〉IN" >nul 2>nul && (
这句中四个>符号,后面三个是中文的 〉而你都把它们写成英文的>,所以导致脚本报错。

两个nul前面的>不算在里面

追问

那我要检索的内容其实就是英文的>> IN,这样写不行是吗

可以把英文的>>变成字符引用吗?

追答

因为>符号在命令行里面是一个特殊符号,它有特殊作用。
因此我在命令里面做了一下转换,把英文>转换成中文〉,以便后续操作,但不影响你原始文本中的内容。所以你必须把脚本中的三个>改成〉

追问

我的系统一用中文打出来就变这样了:(

追答

这样也可以。不过第一个后面不带空格的。

追问

好使了,太感谢了!3Q3Q

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答