2014-05-05 33 views
1

我有一些代碼,我正在嘗試使用此文件,並等待它到達第39行。然後在第39行,我希望它打印其他內容。但我無法讓它達到IF條件。批量如何更改單行?

set line=0 

FOR /f "usebackqdelims=" %%a in ("%filename2%") do (
    set /a line+=1 
    if !line!==39 (
     echo REPLACED TEXT>>%tempfile% 
    ) else (
     echo %%a>>%tempfile% 
    )) 

set /a line+=1 

後,我試圖

ECHO線

,看看有什麼我行變量是在我將它設置爲線+ = 1。我收到全0。有沒有人看到我的代碼爲什麼不像它應該增加的行那樣?但是當它輸出文件時,除了沒有改變的第39行之外,它完全輸出。它仍然是一樣的。

回答

2

我想你失蹤setlocal ENABLEDELAYEDEXPANSION,你需要使用echo !line!如果你想輸出的塊中:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set line=0 

FOR /f "usebackqdelims=" %%a in ("%filename2%") do (
    set /a line = !line!+1 
    ECHO !line! 
    if !line!==39 (
     echo REPLACED TEXT>>%tempfile% 
    ) else (
     echo %%a>>%tempfile% 
    )) 
+0

哇!完善!那正是我所錯過的 –