Batch file 使用DOS批处理文件从文本文件中删除回车

Batch file 使用DOS批处理文件从文本文件中删除回车,batch-file,Batch File,在一个文本文件中,我有以下几行: 2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;" ";0;0;E/272 2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;" ";0;0;D/275 我需要使用DOS批处理文件来完成此新输出: 2014-10-09 00:00:00.000;1663;20

在一个文本文件中,我有以下几行:

2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"
                    ";0;0;E/272

2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"
                    ";0;0;D/275
我需要使用DOS批处理文件来完成此新输出:

2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"";0;0;E/272

2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"";0;0;D/275
我尝试过这个解决方案:

for /f "delims=" %%a in (oldfile.txt) do (
echo/|set /p ="%%a%"
)>>newfile.txt
但是输出是错误的,我在txt newfile中没有两行,但只有一行:

2014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"";0;0;E/2722014-10-09 00:00:00.000;1663;2014-10-09 12:38:46.000;A;"";0;0;D/275
我错过了什么

这个代码怎么了

先谢谢你

  • 双引号中的新行在中绝对有效

  • 为什么不使用支持Perl正则表达式的文本编辑器呢?
    例如,使用as搜索字符串
    (?)运行Perl正则表达式替换?
    
    @echo on
    setlocal EnableDelayedExpansion
    set "INTEXTFILE=oldfile.txt"
    
    if not exist "%INTEXTFILE%" goto EndBatch
    
    set "OUTTEXTFILE=newfile.txt"
    if exist "%OUTTEXTFILE%" del "%OUTTEXTFILE%"
    
    set "FirstLine="
    set "EndFirstLine=""
    set "BeginSecondLine=                    ";"
    
    for /f "usebackq delims=" %%A in ("%INTEXTFILE%") do (
        set "Line=%%A"
        if not "!FirstLine!"=="" (
            if "!Line:~0,22!"=="!BeginSecondLine!" (
                set "FirstLine=!FirstLine!!Line:~20!"
                echo !FirstLine!>>"%OUTTEXTFILE%"
                set "Line="
            ) else (
                echo !FirstLine!>>"%OUTTEXTFILE%"
            )
            set "FirstLine="
        )
        if not "!Line!"=="" (
            if "!Line:~-1!"=="!EndFirstLine!" (
                set "FirstLine=!Line!"
            ) else (
                echo !Line!>>"%OUTTEXTFILE%"
            )
        )
    )
    
    :EndBatch
    endlocal