2013-12-18 90 views
0

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

它真的必須在批處理腳本中完成嗎? 並且是PowerShell的可能性? – woutervs

+0

@迴響 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

+0

它應該運行在Windows服務器..也可能是wsf – user3115573

回答

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作爲結果文件名。

+0

我會嘗試。謝謝! – user3115573

+0

Hi.Thanks - 它工作完美。我試圖添加一個命令來在同一個進程中移動q20660695.txt和newfile.txt。它說該文件被另一個進程使用。任何想法如何做,或者我應該只是一個獨立的過程? – user3115573

+0

你需要在''> newfile.txt'和第一個'GOTO:EOF'之間出現'MOVE'行 – Magoo