2014-09-03 156 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

感谢球员,但我使用查找和替换。更容易