Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用批处理脚本编辑.ini文件中的多个文本行_Batch File - Fatal编程技术网

Batch file 如何使用批处理脚本编辑.ini文件中的多个文本行

Batch file 如何使用批处理脚本编辑.ini文件中的多个文本行,batch-file,Batch File,我对批处理脚本非常陌生,但我想用它来自动编辑.ini文件中的以下值 ini(请注意,它是一个配置文件,在这两个条目之前、之后和之间有许多其他条目。) 更新后的值应如下所示:([Log]Enabled=1&[Support]MailSenderAddress应为空) 最后,我希望在master.bat脚本中包含更新这些条目的代码 你们能帮我一下吗?@ECHO OFF SETLOCAL 设置“logsection=” 设置“supportsection=” ( 对于/f“tokens=1*delim

我对批处理脚本非常陌生,但我想用它来自动编辑.ini文件中的以下值

ini(请注意,它是一个配置文件,在这两个条目之前、之后和之间有许多其他条目。)

更新后的值应如下所示:([Log]Enabled=1&[Support]MailSenderAddress应为空)

最后,我希望在master.bat脚本中包含更新这些条目的代码

你们能帮我一下吗?

@ECHO OFF
SETLOCAL
设置“logsection=”
设置“supportsection=”
(
对于/f“tokens=1*delims=“%%a IN(q25635303.txt)DO(
对于/f“tokens=1*delims==”%%b IN(“%%a”)DO(
设置复制=Y
如果“%%c”==”(
设置“logsection=”
设置“supportsection=”
如果/i“%%b”==“[Log]”设置logsection=y
如果/i“%%b”==“[Support]”设置supportsection=y
)否则(
如果定义了logsection如果“%%b”==“已启用”(设置“repro=”&ECHO(已启用)=1)
如果定义了支持,则在“%%b”==“SenderAddress”(设置“repro=”&ECHO(SenderAddress=)
)
如果定义了复制回波(%%a
)
)
)>newfile.txt
FC q25635303.txt newfile.txt
后藤:EOF
我使用了一个名为
q25635303.txt
的文件,其中包含了测试数据。 生成newfile.txt

Begorrah,但是很难单独处理一个小的目标区域,是的,是的

上面的方法应该有效——很好,它确实适用于您提供的数据,但是如果没有一个更完整的.ini文件列表,就不可能是非常积极的


最后的
fc
只是比较之前和之后的版本以进行验证。我的关键点是指定了值的项目是否包含空格。如果是这样,则需要进行调整…

谢谢大家,但我使用的是查找和替换。更简单的可能不止一个文件中启用了
的行
SenderAddress
?非常感谢您的帮助。是的,文件中有多行启用了&SenderAddress。这就是我提到[Log]和[Support]的原因块是唯一的。此外,是否可以更新同一文件而不是创建新文件?因为此特定ini文件是软件的一部分,我不想创建另一个文件并使用软件的文件/文件夹结构。如果可能,我建议您使用
python
ConfigParser
in
python
支持自然而有力地读取和写入
.ini
样式的文件。感谢Landys,我完全不了解python,我更喜欢批处理脚本,因为这样我就可以将此代码包含在主脚本中,主脚本基本上通过调用setup.exe来安装软件。我可以用python执行类似的操作吗它不需要在windows中安装某种服务/应用程序/软件吗?因为批处理脚本可以在windows上运行,而不需要任何类型的外部应用程序或软件,所以我们可以将此bat文件提供给我们的任何客户,而不必担心它是否可以在他们的机器上正常运行,因为我们知道它可以在windows上运行s、 非常感谢您的帮助。是的,没错,文件中有多行带有Enabled&SenderAddress。这就是我提到[Log]和[Support]的原因块是唯一的。此外,是否可以更新同一文件而不是创建新文件?因为此特定ini文件是软件的一部分,我不想创建另一个文件并使用软件的文件/文件夹结构。在位编辑的问题是,当通过重定向打开输出文件时,它已清除,因此该文件中没有可用的输入数据。但是,将上面的“
for…%%a.”
行中的“
q25365303.txt”
更改为“
”type newfile.txt”
(需要单引号)缓冲区
newfile.txt
,显然解决了问题(至少对我来说是这样)。显然,
首先将
q25635303.txt复制到newfile.txt允许您测试更改。测试完成后,删除
copy
,并将所选文件名替换为
newfile.txt
[Log]
Enabled = 0   

[Support]
Line1 = ÿ
Lines = 1
SenderAddress = Report@example.com  
[Log]
Enabled = 1

[Support]
Line1 = ÿ
Lines = 1
SenderAddress =