2013-09-18 2 views
0

У меня есть программа, для которой параметр в файле .ini, кажется, постоянно возвращается. Я постоянно проверяю файл, чтобы проверить, нужно ли его редактировать, поэтому я хотел бы посмотреть, могу ли я создать пакетный файл, который будет выполнять эту работу. Идея состоит в том, чтобы создать этот командный файл для сканирования файла .ini каждые 2 минуты, чтобы проверить значение конкретной строки и при необходимости изменить значение. Линия:Пакетный файл для редактирования .ini

UpdateSpeedCore = 8

8 нужный номер для проверки, но иногда он возвращается к 100.

Имя файла prolasso.ini и путь C: \ Documents and Settings \ Администратор \ Данные приложения \ ProcessLasso \ config \ prolasso.ini.

Thankyou для всех, кто может помочь с этим раздражением ...

Edit: Подробнее о файле .ini. Пустых строк нет. Тем не менее, есть некоторые строки, которые устанавливаются как «=» без значения «Power =». В файле, например, «[Debug]» или «[AdvancedRules]», может быть полдюжины разделителей разделов. Они не равны значению. Это статические линии длины мудрый и около 100 строк. Помимо разделителей разделов, все строки используют знак «=», за которым следует значение. Им предшествует имя параметра, как в «UpdateSpeedCore».

+1

более простое решение: сделайте копию своего хорошего ini-файла и перезапишите существующие ini каждые 2 минуты ...? –

+0

может быть, он хочет сохранить другие изменения. – Stephan

+0

Kayasax, это хорошая идея, но я иногда вношу изменения в другие настройки. –

ответ

3

Это ожидает, что UpdateSpeedCheck=8 будет на отдельной линии без пробелов.

Он использует вспомогательный пакетный файл с именем repl.bat от - http://www.dostips.com/forum/viewtopic.php?f=3&t=3855, который можно поместить в ту же папку.

@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 
+0

foxidrive ... спасибо за этот скрипт и за REPL.bat. Я попытаюсь научиться использовать REPL.bat. Три вопроса. 1. Бат работает, когда выполняется вручную, но, похоже, он не работает на пинге. Я заблудился, пытаясь использовать ПК с обычной структурой учетных записей, поэтому я полностью проигнорировал его, и я не могу создать расписание для .bat. 2. Когда скрипт запускается вручную, он оставляет окно командной строки открытым. Любой способ закрыть CP в скрипте? 3. Размер .ini уменьшился с 9 кб до 5. По сравнению с измененным .ini-файлом в оригинале, он будет таким же. Любые проблемы? –

+0

foxidrive ... если возможно, я хотел бы запустить это без открытия окна командной строки. Возможно, это еще один вопрос ... –

+0

Все решены ... нашли программу планировщика, которая будет запускать пакет как скрытый процесс каждые 2 минуты. Не могу вас поблагодарить. Планировщик - это системный планировщик, созданный Splinterware. –

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 

примечание: это решение удалит пустые строки.

Редактировать: решить проблему с дополнительным пространством при каждом запуске (позаботьтесь о том, чтобы после). Это также должно решить проблему с несколькими тысячами (вероятно, из-за большой длины строки)

+1

Приятный, но он терпит неудачу после ~ 8000 звонков, так как он каждый раз добавляет пробел в каждой строке. И он также удалит строки, начинающиеся с ';', но я полагаю, что таких строк не должно быть – jeb

+0

Спасибо Stephan. Я попробую файл. –

+0

Извините, Стефан. Я запустил файл вручную из папки, содержащей .ini, но удалил все данные в .ini, за исключением знака равенства во второй строке. Конечно, ничего не потеряно, но не повезло.Я не знаю много о дозировании, поэтому я, возможно, допустил ошибку, хотя я пытался внимательно следить за вашими инструкциями. Я добавил некоторую информацию о файле .ini, если это помогает ... –

1

http://www.pixelbeat.org/programs/crudini должны работать на всех платформах и может быть использован для чтения и обновления INI-файл в прочном и простым способом.

crudini --set prolasso.ini '' UpdateSpeedCore 8 

Собираем в цикле:

:loop 
crudini --set prolasso.ini '' UpdateSpeedCore 8 
ping localhost -n 121 > nul 
goto loop 
1

В Windows вы можете использовать IniFile для управления содержимым файлов .ini из пакетных сценариев. Операции IniFile являются идемпотентными.

inifile.exe "C:\Documents and Settings\Administrator\Application Data\ProcessLasso\config\prolasso.ini" UpdateSpeedCore=8 
Смежные вопросы