Batch file 使用每行包含“=”的批处理拆分txt

Batch file 使用每行包含“=”的批处理拆分txt,batch-file,text,split,Batch File,Text,Split,我用下面的脚本每6000行分割一次文件,但是我遇到了一个问题。。。。 我的txt文件的每一行都有字符“=”,因此当批处理文件时,当我有“=”时,行停止并转到下一行,我没有每一行的结尾,在=之后的任何内容都会被删除 FOR %%X IN (*.TXT) do ( setlocal ENABLEDELAYEDEXPANSION SET BFN=%%X SET LPF=6000 SET SFN=%%X_6000_ ) REM ============================== SET SFX

我用下面的脚本每6000行分割一次文件,但是我遇到了一个问题。。。。 我的txt文件的每一行都有字符“=”,因此当批处理文件时,当我有“=”时,行停止并转到下一行,我没有每一行的结尾,在=之后的任何内容都会被删除

FOR %%X IN (*.TXT) do (
setlocal ENABLEDELAYEDEXPANSION
SET BFN=%%X
SET LPF=6000
SET SFN=%%X_6000_
)
REM ==============================
SET SFX=%BFN:~-3%

SET /A LineNum=0
SET /A FileNum=1

For /F "delims==" %%l in (%BFN%) Do (
SET /A LineNum+=1

echo %%l >> %SFN%!FileNum!.%SFX%

if !LineNum! EQU !LPF! (
SET /A LineNum=0
SET /A FileNum+=1
)

)
endlocal
有人能帮我吗

文件样本:

A88A0A1891BAA9=B088A00000003800001==00000038000
A88A0A1B13A0BB=B088A00000089000002==00000890000
A88A0A1A13B830=B088A000000B3800003==00000B38000
A88A0A00331831=B088A00000010A00004==0000010A000
A88A0A10B31B39=B088A00000090A00005==0000090A000
A88A0A19A3AA89=B088A00000089800006==00000898000
A88A0A19AA0318=B088A000000A0100007==00000A01000
A88A0A08911913=B088A00000008800008==00000088000
A88A0A1089A139=B088A00000098300009==00000983000
A88A0A1BB8BBA8=B088A000000AA100010==00000AA1000
A88A0A0A8B9199=B088A00000098100011==00000981000
A88A0A19AA8A9B=B088A00000088900012==00000889000
A88A0A0B380A13=B088A00000099A00013==0000099A000
A88A0A13899A18=B088A00000088A00014==0000088A000
A88A0A1A188910=B088A0000008A800015==000008A8000
A88A0A10930AA0=B088A0000009B900016==000009B9000
A88A0A09338A88=B088A000000A0A00017==00000A0A000
A88A0A11A98930=B088A000000AAB00018==00000AAB000
将每个文件的LPF行数设置为6,以下是3个文件中的第一个文件的结果:

A88A0A1891BAA9                                         
A88A0A1B13A0BB                                          
A88A0A1A13B830                                          
A88A0A00331831                                       
A88A0A10B31B39                               
A88A0A19A3AA89    

谢谢

删除delims中的第二个=项:


delims==表示命令尝试使用=

你需要的是

For /F "tokens=*" %%l in (%BFN%) Do
这意味着给我整条线,不要把它分割成代币

同样,在上面的代码中,do块的嵌套似乎是错误的。 看起来第一个for循环只是设置环境变量,不做其他事情。你真的运行过这个代码吗

应该是

@echo off
FOR %%X IN (*.TXT) do (
    setlocal ENABLEDELAYEDEXPANSION
    SET BFN=%%X
    SET LPF=6000
    SET SFN=%%X_6000_

    REM ==============================
    SET SFX=%BFN:~-3%

    SET /A LineNum=0
    SET /A FileNum=1

    For /F "tokens=*" %%l in (%BFN%) Do
        SET /A LineNum+=1

        echo %%l >> %SFN%!FileNum!.%SFX%

        if !LineNum! EQU !LPF! (
            SET /A LineNum=0
            SET /A FileNum+=1
        )

    )
endlocal
)

它就像一个符咒!谢谢问题解决了!我想我需要一些睡眠。再次感谢!谢谢这是错误的。。。这个问题有一段时间没有被发现,因为我一次只需要运行一个文件。。。
@echo off
FOR %%X IN (*.TXT) do (
    setlocal ENABLEDELAYEDEXPANSION
    SET BFN=%%X
    SET LPF=6000
    SET SFN=%%X_6000_

    REM ==============================
    SET SFX=%BFN:~-3%

    SET /A LineNum=0
    SET /A FileNum=1

    For /F "tokens=*" %%l in (%BFN%) Do
        SET /A LineNum+=1

        echo %%l >> %SFN%!FileNum!.%SFX%

        if !LineNum! EQU !LPF! (
            SET /A LineNum=0
            SET /A FileNum+=1
        )

    )
endlocal
)