2013-02-21 38 views
1

我以前有過我的問題的答案,但現在我意識到我需要更多的幫助。我有一些代碼,它幾乎一切我想它:搜索帶有變量的文件名,並用多行替換另一個文件中的不同變量文本

@echo off 

copy 2.txt 2.txt-backup 

setlocal enableDelayedExpansion 

>2.txt (
    for /f "delims=" %%A in (2.txt-backup) do (
set "ln=%%A" 
if "!ln:~0,6!" == "Class=" findstr /c:"ClassName=!ln:~6!" 1.txt >null && set  "ln=Class=ShipDummy" 
echo !ln! 
) 
) 

請參閱本: Batch - I would like to search with a variable in one file and replace that variable result in another file

但現在我已經意識到我需要的1.txt是在一個變量文件名它的名字,一系列文件,沒有確切的限制,如:

Log_0.txt

Log_1.txt

Log_2.txt

Log_3.txt

等等....

有可能只是Log_0.txt,或有可能通過Log_23.txt被Log_0.txt,甚至更多...

另外,我想另一行添加到類= ShipDummy的替換文本是: 類ShipDummy 類型= 206

而且將取代文本行的正下方類= ShipDummy替換文本Type = 206。\

回答

1

這是做你想做的嗎?

@echo off 

copy 2.txt 2.txt-backup 

setlocal enableDelayedExpansion 

>2.txt (
    for /f "tokens=1* delims=:" %%A in ('findstr /n "^" 2.txt-backup') do (
     (echo !ln!| findstr "^Type=206$" >NUL && set ln=ln) || (
      set "ln=%%B" 
      if "!ln:~0,6!"=="Class=" (
       findstr /c:"ClassName=!ln:~6!" Log_*.txt >null && (
        echo Class=ShipDummy 
        set "ln=Type=206" 
       ) 
      ) 
      if #!ln!==# (echo;) else echo !ln! 
     ) 
    ) 
) 
+0

差不多。它改變了你所說的一切,但是我想用Type = 206替換Class = ShipDummy下面的行,這只是在其下面增加了Type = 206,將其他所有內容移動到一行。另外,它將文件中的所有行組合起來,將它們全部堆疊起來,一個接一個地刪除空行。如何在不刪除空行的情況下做到這一點? – machiavelli 2013-02-21 21:06:16

+0

那裏,我做了一個改變,將取代下一行,而不是插入。至於保留空白,我可能不得不讓它讓下一個人弄清楚。我出去玩一天。 :) – rojo 2013-02-21 21:29:37

+0

非常感謝。 – machiavelli 2013-02-21 21:37:14

相關問題