我有一个文件,其中一个标题始终以H开头;并以; 4
结尾然后会有一个或多个以L开头的行;并以; 1
结束看起来像这样:
H;;69622;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4
L;;0092820046;;2,000;;;;;;;;;;;20131216;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;1
L;;0092825046;;5,000;;;;;;;;;;;20131216;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;1
我需要做一个做两件事的批处理工作:
1)添加;;;在以H开头的行上结束4之前; 2)添加;;;;;;然后在以L开头的行上结束1;
任何可以提供帮助的人?
最好的问候Tore
修改:添加了代码标记
编辑:OP的最终代码版本
@ECHO OFF
setLocal EnableDelayedExpansion
IF NOT EXIST c:\tmp\barex\barex\ordchgr.edi GOTO :EOF
move c:\tmp\barex\barex\ordchgr.edi c:\tmp\barex\contents.txt
set SAVESTAMP=%DATE:/=%%TIME::=%
set SAVESTAMP=%SAVESTAMP: =%
SET "add2H=;;;"
SET "add2L=;;;;;;"
(
FOR /f "delims=" %%a IN (c:\tmp\barex\contents.txt) DO (
SET line=%%a
CALL :repl
)
)>c:\tmp\barex\output.txt
move output.txt c:\tmp\barex\edi\ordcgr%SAVESTAMP%.edi
move contents.txt c:\tmp\barex\edi\contents%SAVESTAMP%.txt
GOTO :EOF
:repl
IF %line:~0,1%==H ECHO %line:~0,-1%%add2H%%line:~-1%
IF %line:~0,1%==L ECHO %line:~0,-1%%add2L%%line:~-1%
GOTO :eof
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "add2H=;;;"
SET "add2L=;;;;;;"
(
FOR /f "delims=" %%a IN (q20660695.txt) DO (
SET line=%%a
CALL :repl
)
)>newfile.txt
GOTO :EOF
:repl
IF %line:~0,1%==H ECHO %line:~0,-1%%add2H%%line:~-1%
IF %line:~0,1%==L ECHO %line:~0,-1%%add2L%%line:~-1%
GOTO :eof
这应该按照你的要求去做。我使用q20660695.txt
作为输入文件名,newfile.txt
作为结果文件名。