2014-09-03 148 views
0

編輯在.ini文件中的多個文本行我是很新的批量腳本,但我想用它來在.ini文件如何使用批處理腳本

Example.ini自動編輯下面的值(請前注意,它與很多其他項目的配置文件,後在這兩個項目之間)

[Log] 
Enabled = 0 

[Support] 
Line1 = ÿ 
Lines = 1 
SenderAddress = [email protected] 

更新後的值應該是這樣的:([日誌]啓用= 1 & [支持] MailSenderAddress應變成空白)

[Log] 
Enabled = 1 

[Support] 
Line1 = ÿ 
Lines = 1 
SenderAddress = 

Evenutally,我想包括代碼來更新主.bat腳本中的這些條目。

請問您能幫我解決嗎?

+0

在文件中可能多於一行'Enabled'或'SenderAddress'? – Aacini 2014-09-03 02:39:50

+0

非常感謝您的幫助。是的,這是正確的,文件中有多行與啓用&SenderAddress。這就是爲什麼我提到[Log]和[Support]塊是獨一無二的。另外,是否可以更新同一文件而不是創建新文件?因爲這個特定的ini文件是軟件的一部分,我不想創建另一個文件並使用該軟件的文件/文件夾結構。 – irish 2014-09-03 03:36:19

+0

如果可能,我建議你使用'python'。 'python'中的'ConfigParser'支持自然而強大的讀寫'.ini'風格文件。 – Landys 2014-09-03 03:41:31

回答

0
@ECHO OFF 
SETLOCAL 
SET "logsection=" 
SET "supportsection=" 
(
FOR /f "tokens=1*delims=" %%a IN (q25635303.txt) DO (
    FOR /f "tokens=1*delims== " %%b IN ("%%a") DO (
    SET repro=Y 
    IF "%%c"=="" (
    SET "logsection=" 
    SET "supportsection=" 
    IF /i "%%b"=="[Log]" SET logsection=y 
    IF /i "%%b"=="[Support]" SET supportsection=y 
    ) ELSE (
    IF DEFINED logsection IF "%%b"=="Enabled" (SET "repro="&ECHO(Enabled = 1) 
    IF DEFINED supportsection IF "%%b"=="SenderAddress" (SET "repro="&ECHO(SenderAddress =) 
    ) 
    IF DEFINED repro ECHO(%%a 
) 
) 
)>newfile.txt 

FC q25635303.txt newfile.txt 

GOTO :EOF 

我用了一個名爲q25635303.txt的文件,其中包含您的數據以供測試。 產生newfile.txt

Begorrah,但它很難與孤立的小目標部分工作,它是,它是。

上述內容應該能夠正常工作 - 對您提供的數據有效,但沒有.ini文件的更完整列表,不可能非常積極。

fc最後只是比較前後版本進行驗證。我擁有的關鍵點是具有分配給它的值的項目是否可以包含空格。調整將需要,如果是這樣的...

+0

非常感謝您的幫助。是的,這是正確的,文件中有多行與啓用&SenderAddress。這就是爲什麼我提到[Log]和[Support]塊是獨一無二的。另外,是否可以更新同一文件而不是創建新文件?因爲這個特定的ini文件是軟件的一部分,我不想創建另一個文件並使用該軟件的文件/文件夾結構進行播放。 – irish 2014-09-03 03:55:18

+0

現場編輯的問題是當輸出文件被打開時重定向,它被清除,所以沒有來自該文件的輸入數據。但是,將上面'... %% a ...'行中的'q25365303.txt'更改爲''newfile.txt'(單引號是必需的**)緩衝'newfile。txt'打開之前輸出,顯然解決了問題(至少,它爲我做了)。顯然,首先將'q25635303.txt複製到newfile.txt文件中,可以讓您測試更改。當測試完成後,移除'copy'並將你選擇的文件名替換爲'newfile.txt'。 – Magoo 2014-09-03 05:22:43

0

感謝球員,但我使用查找和替換。更容易