我有一个报头总是用H开始一个文件在文件结尾替换文本;以及与结束; 4使用bat文件
然后会有一个或多个开始的行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)add ;;;;;;;;;;;;;;;;;;;;;在以L开头的行上结束1之前;
任何人都可以协助?
问候撕毁
编辑:添加代码标签
编辑: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
它真的必须在批处理脚本中完成吗? 并且是PowerShell的可能性? – woutervs
@回响 SETLOCAL EnableDelayedExpansion FOR/F “令牌= * delims =” %%一个中(contents.txt)做( 集合/ A N + = 1个 组标线= %%一个 回波!标线!>> output.txt set subLine =!strLine:〜0,1! if/i。!subLine!EQU .H; echo!strLine!;;; 4 )我试图将其输出到一个文件中......它似乎是工作bfor一行,但那么类型L ... – user3115573
它应该运行在Windows服务器..也可能是wsf – user3115573