2015-08-22 13 views
0

修改的文本,我應該:批在特定的行

1)刪除整條生產線是一樣

HYDRAULICS blabla

我想用

find /V "HYDRAULICS"....>path\file.ext 

,但在文件中。分機寫也不需要

---------- path\file.ext

2)在以IF開頭的行之前,添加包含短語RULE 1(第一次,RULE 2第二次等)的行。 我有文字

[RULES] 
;Text 
;----------------------------- 
IF TANK T1421 LEVEL BELOW 1 THEN PUMP PT395&395dn STATUS IS OPEN          
IF TANK T1421 LEVEL ABOVE 3 THEN PUMP PT395&395dn STATUS IS CLOSED         
IF TANK T395 LEVEL BELOW 1 THEN PUMP PFALDA395&T395 STATUS IS OPEN         
IF TANK T395 LEVEL ABOVE 4 THEN PUMP PFALDA395&T395 STATUS IS CLOSED 

,但我希望它成爲

[RULES] 
;Text 
;----------------------------- 
RULE 1 
IF TANK T1421 LEVEL BELOW 1 THEN PUMP PT395&395dn STATUS IS OPEN          
RULE 2 
IF TANK T1421 LEVEL ABOVE 3 THEN PUMP PT395&395dn STATUS IS CLOSED         
RULE 3 
IF TANK T395 LEVEL BELOW 1 THEN PUMP PFALDA395&T395 STATUS IS OPEN         
RULE 4 
IF TANK T395 LEVEL ABOVE 4 THEN PUMP PFALDA395&T395 STATUS IS CLOSED 
+0

您的觀點'2)'不清楚。 – foxidrive

+0

這篇文章已經更新了更多信息,非常感謝您分享您的知識@foxidrive – Sandra

回答

1

對於部分2)此使用的新老技術的混合物 - 該輸入文件是file.txt和輸出文件是newfile.txt

它可以通過使用延遲擴展被簡化。

@echo off 
del "%temp%\counter.txt" 2>nul 
(
for /f "eol=| usebackq delims=" %%a in ("file.txt") do (
    for /f %%b in ("%%a") do (if /i "%%b"=="IF" echo .>>"%temp%\counter.txt" 
      for /f %%c in ('find /c "." ^<"%temp%\counter.txt" ') do echo RULE %%c 
    ) 
echo %%a 
) 
)>"newfile.txt" 
del "%temp%\counter.txt" 2>nul 

這是一個重新格式化的部分 - 桑德拉似乎認爲它更可讀。

@echo off 
del "%temp%\counter.txt" 2>nul 
(
for /f "eol=| usebackq delims=" %%a in ("file.txt") do (
    for /f %%b in ("%%a") do (
     if /i "%%b"=="IF" (
      echo .>>"%temp%\counter.txt" 
      for /f %%c in ('find /c "." ^<"%temp%\counter.txt" ') do echo RULE %%c 
     ) 
    ) 
echo %%a 
) 
)>"newfile.txt" 
del "%temp%\counter.txt" 2>nul 
+0

什麼是'eol = |'用於? – aschipfl

+1

@aschipfl'eol'字符默認爲';',所有以';'開頭的行都會消失 - 並且有一些。我只是踢了一下,並將其變成了管道字符 - 但是任何以管道字符開頭的行將消失。 – foxidrive

+0

您給出的解決方案非常完美,但我無法將它們標記出來。 @foxidrive – Sandra

0

使用重定向時,多餘的線不會出現。

find /V "HYDRAULICS" <"filein.txt" >"path\file.ext" 
+0

您給出的解決方案非常完美,但我無法將它們標記出來。 @foxidrive – Sandra

相關問題