|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и изменение содержимого в INI файле |
|
CMD/BAT - [решено] Поиск и изменение содержимого в INI файле
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать Доброго времени всем!!!
имеется такой листинг: [Программа1] Версия=2.1.0.55 [Программа2] Версия=1.0.0.14 [Программа3] Версия=1.1.1.1 [Программа5] версия=6.1.1.0 [программа4] версия=2.0.0.0 [программа8] версия=4.1.1 собственно вопрос: как написать такой батничек, чтобы он искал в этом файле нужную секцию и следующую строку менял на другую, т.е. секцию [Программа2] версия=1.0.0.14 заменить на [Программа2] версия=1.0.0.15, причем чтобы можно было одновременно заменять несколько секций с проверкой существующей версии, а то может и менять не надо Заранее спасибо всем откликнувшимся! |
|
Отправлено: 14:21, 07-10-2010 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Уточните, КАК Вы хотите передавать список данных для изменения. Файликом?
|
------- Отправлено: 18:50, 07-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Ну, в принципе у меня задача обрабатывать несколько разнесенных местоположений с этими фалами - проще прописать эти данные в нем самом
|
Отправлено: 08:55, 08-10-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать avb_trader, весьма туманное условие, уточняющие вопросы:
- могут ли в секции присутствовать другие параметры кроме "Версия"? - обязательно ли сохранять относительное положение секции в файле? - что значит "с проверкой", если предполагается простая замена параметра? |
Отправлено: 12:32, 08-10-2010 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать amel27, спасибо за появление!! я много ваших постов прочитал - понял - Вы МАСТЕР в этом деле, пишите очень красиво!!
1. В данном случае конкретно в секции присетвтует только параметр "Версия=1.1.1.1", но хотелось бы универсальности, чтобы не только сдесь это использовать, но и на других примерах (скадем конфиги openvpn - для замены в них параметров) 2. Сохранять относительное положение не обязательно 3. возможно есть такой вариант что секция найдена нужная - но в ней уже заменено на требуемую версию или версия для замены не соответствует нужной. Например надо заменить [Приложение1] версия=1.1.1.1 на [Приложение1] версия=1.1.2.1 А в файле присутствует [Приложение1] версия=1.1.1.0 Надеюсь понятно объяснил, по крайней мере - старался |
|
Отправлено: 13:20, 08-10-2010 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата avb_trader:
забыл уточнить про кодировку исходного INI, предположим что это WIN (ANSI/1251) само собой, кодировка самого батника родная - DOS (OEM/866) батник устанавливает параметр "версия" секции "[Программа2]" равным "1.0.2.14", то же для секции "[Программа3]", но только если исходное значение параметра равно "2.1.0.0" @echo off call :SETVAL file.ini [Программа2] версия 1.0.2.14 call :SETVAL file.ini [Программа3] версия 1.0.2.14 2.1.0.0 EXIT :SETVAL CHCP 1251 >nul& SETLOCAL DisableDelayedExpansion& set $f=F (for /f "usebackq tokens=1* delims==" %%a in ("%~1") do ( set "$a=%%a"& set "@a=%%~a"& set "$b=%%b"& set "@b=%%b" SETLOCAL EnableDelayedExpansion if "!@a:~,1!"=="[" (echo !$a! if /i "!@a!"=="%~2" (set "$f=T") else set "$f=F" ) else ( if "!$f!"=="T" if /i "!@a!"=="%~3" ( if "%~5"=="" (set "$b=%4") else if "%~5"=="!@b!" set "$b=%4") echo !$a!=!$b! ) for /f "delims=" %%i in ("!$f!") do ENDLOCAL& set "$f=%%~i" ))>"%~dpn0.tmp" copy /y "%~dpn0.tmp" "%~1" >nul&& del "%~dpn0.tmp" CHCP 866 >nul& ENDLOCAL& exit /b |
|
Отправлено: 12:16, 09-10-2010 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать amel27, СУПЕР!!!!
Спасибо большое!! Вы - профессионал! |
Отправлено: 08:20, 11-10-2010 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Изменить настройки в *.ini файле через *.bat | CyberMaster | Скриптовые языки администрирования Windows | 53 | 13-10-2017 23:09 | |
Система - Что у Вас в файле Finish.ini для GUI интегратора? | wolkow70 | Наборы обновлений для Windows XP/2003/Windows 7 | 13 | 15-01-2011 02:07 | |
[решено] Скрипт для удаления нужных слов в ini файле | Pozia | AutoIt | 23 | 27-10-2009 18:42 | |
CMD/BAT - [решено] Поиск каталога и копирование всего его содержимого | desk | Скриптовые языки администрирования Windows | 4 | 01-07-2009 14:28 | |
изменение содержимого файла | slaine | Вебмастеру | 2 | 21-08-2005 18:30 |
|