0

我有一个程序,其 .ini 文件中的设置似乎不断恢复。我发现自己经常检查文件,看它是否需要编辑,所以我想看看我是否能想出一个批处理文件来完成这项工作。想法是创建此批处理文件以每 2 分钟扫描 .ini 文件以检查特定行的值并在必要时更改值。该行是:

更新速度核心=8

8 是支票所需的数字,但有时会恢复为 100。

该文件的名称是 prolasso.ini,路径是 C:\Documents and Settings\Administrator\Application Data\ProcessLasso\config\prolasso.ini。

感谢任何可以帮助解决这个烦恼的人......

编辑:有关 .ini 文件的更多信息。没有空行。但是,有些行将“=”设置为没有值,例如“Power=”。文件中可能有六个部分描述符,例如“[Debug]”或“[AdvancedRules]”。这些设置不等于一个值。这是一个静态长度行,大约 100 行长。除了部分描述符之外,所有行都使用“=”符号后跟一个值。这些前面是设置名称,如“UpdateSpeedCore”。

4

4 回答 4

4

在 Windows 上,您可以使用IniFile从批处理脚本中操作 .ini 文件的内容。IniFile 操作是幂等的。

inifile.exe "C:\Documents and Settings\Administrator\Application Data\ProcessLasso\config\prolasso.ini" UpdateSpeedCore=8
于 2015-06-06T21:12:37.497 回答
3

这期望UpdateSpeedCheck=8本身在一行上,没有空格。

它使用来自http://www.dostips.com/forum/viewtopic.php?f=3&t=3855的名为 repl.bat 的帮助批处理文件,您可以将其放在同一个文件夹中。

@echo off
set "file=C:\Documents and Settings\Administrator\Application Data\ProcessLasso\config\prolasso.ini"

:loop
findstr "^UpdateSpeedCheck=8$" "%file%" >nul || (
type "%file%"|repl "^UpdateSpeedCheck=.*" "UpdateSpeedCheck=8" >"%file%.tmp"
move "%file%.tmp" "%file%" >nul
)
ping -n 120 localhost >nul
goto :loop
于 2013-09-19T03:42:04.577 回答
1

http://www.pixelbeat.org/programs/crudini should work on all platforms and can be used to read and update the ini file in a robust and simple way.

crudini --set prolasso.ini '' UpdateSpeedCore 8

Putting it in a loop:

:loop
crudini --set prolasso.ini '' UpdateSpeedCore 8
ping localhost -n 121 > nul
goto loop
于 2015-01-30T14:47:32.667 回答
1
@echo off
echo. >prolasso.new
FOR /F "delims=\= tokens=1,2" %%K IN (prolasso.ini) DO (
    IF "%%K" NEQ "UpdateSpeedCheck" (
        >>prolasso.new echo %%K=%%L
    ) else (
        >>prolasso.new echo %%K=8
    )
)
del prolasso.ini
ren prolasso.new prolasso.ini

注意:此解决方案将删除空行。

编辑:解决了每次运行时额外空间的问题(注意,后面没有空格echo %%K=%%L)。这也应该解决数千次运行的问题(可能是因为行长很大)

于 2013-09-18T13:37:16.610 回答