2011-07-05 112 views
4

我有一個自動生成的ini文件。批處理文件在ini文件中編輯行

它的第二個行始終是: Version = W.XX.Y.ZZ

哪裏W是主版本號,XX是次要版本,Y是生成和ZZ是修訂。

我需要打開該ini文件並使用批處理文件編輯該行,以便該版本中的構建版本號和修訂版號被刪除。因此,該行最終應如下所示: Version = W.XX

主數字將始終爲一個字符,次數始終爲2,因此整個字符串的長度爲14個字符(inc空格)。

我希望能得到該行的14個字符的字符串,並用該字符串替換該行。

+0

我知道這樣做的唯一方法是在整個閱讀文件並逐行寫回來,在流程中更改所需的行。 – Maynza

回答

6

「左」的語法,你要求的是使用一個變量子擴張:%var:~,14%

下面的代碼將在包含字符串「版本」

每一行執行「LEFT 14」
setlocal enabledelayedexpansion 
del output.ini 
for /f "tokens=*" %%a in (input.ini) do (
    set var=%%a 
    if not {!var!}=={!var:Version=!} set var=!var:~,14! 
    echo.!var! >> output.ini 
) 
endlocal 

如果還有其他行帶有單詞「版本」,您也可以修改循環以使用計數器。

setlocal enabledelayedexpansion 
del output.ini 
set counter=0 
for /f "tokens=*" %%a in (input.ini) do (
    set var=%%a 
    set /a counter=!counter!+1 
    if !counter! EQU 2 set var=!var:~,14! 
    echo.!var! >> output.ini 
) 
endlocal 

注意,在這兩種情況下,你可能需要做更多的工作,如果你的文件包含特殊符號像|,<,或者>

+0

'set/a RyanBemroseVotes + = 1' :) –

+0

謝謝瑞恩。完美的作品 –