我有一個報頭總是用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