CMD/BAT - Изменить настройки в *.ini файле через *.bat

Ответить
 • Просмотры: 1
Аватара пользователя
SendMessage

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение SendMessage »

текст батника



Код:

Код: Выделить всё

@Echo Off
CALL :REPLINE "drwu.ini" "Autostart=" "Autostart=1"
CALL :REPLINE "drwu.ini" "Destination=" "Destination=.\DrWebUP"
:REPLINE
 If Not Exist "%~1" Exit /B 1
 If Exist "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp"
 Set $N=0& For /F "Delims=:" %%i In ('FindStr /BINRC:" *%~2" "%~1"') Do Set $N=%%i
 If %$N% NEQ 0 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ENRC:"$" "%~1"') Do If "%%i"=="%$N%" (
 Echo %~3 >>"%~dpn1.tmp" ) ELSE Echo.%%j>>"%~dpn1.tmp"
 If Exist "%~dpn1.tmp" If Exist "%~1" DEL /F/Q "%~1"
 If Exist "%~dpn1.tmp" REN "%~dpn1.tmp" "%~nx1"
Exit /B 0

текст инишника



Код:

Код: Выделить всё

[DrWU]
Language=Russian
Boot=0
AutoUpdate=1
Autostart =0
ExitAfterUpdate= 
UseMethod=1
UpdateMethod=0
FTPPassive=0
UpdateTXT=1
UpdateInterval=120
EnableAdditionalPath=0
Source=
UseProxy=0
Proxy=
Destination=.\DrWebUP

ЗЫ. Запостил сообщение и заметил ошибку, параметр autostart отделен пробелом от значения- это уже я эксперементировал и пробовал с пробелом и без...

Убрал в ини файле и ваш совет помог- если сделать пробел между %3 и >> то работает Изображение
Аватара пользователя
Foreigner

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Foreigner »

amel27,



А можно немного усложнить задачу?



Что если часть значения которое нужно заменить необходимо вычислить? Например переменную %PROGRAMFILES% в пути C:\Program Files\Opera\profile\scripts ?



Например должно получится так



CALL :REPLINE "operaprefs.ini" "User JavaScript File=" "User JavaScript File=C:\Program Files\Opera\profile\scripts"



Но для этого нужно вычислить с начало переменную и подставить его в значение...
Аватара пользователя
volk1234

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение volk1234 »

текст батника



Код:

Код: Выделить всё

@Echo Off
CALL :REPLINE "drwu.ini" "Autostart=" "Autostart=1"
CALL :REPLINE "drwu.ini" "Destination=" "Destination=.\DrWebUP"
:REPLINE
 If Not Exist "%~1" Exit /B 1
 If Exist "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp"
 Set $N=0& For /F "Delims=:" %%i In ('FindStr /BINRC:" *%~2" "%~1"') Do Set $N=%%i
 If %$N% NEQ 0 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ENRC:"$" "%~1"') Do If "%%i"=="%$N%" (
 Echo %~3 >>"%~dpn1.tmp" ) ELSE Echo.%%j>>"%~dpn1.tmp"
 If Exist "%~dpn1.tmp" If Exist "%~1" DEL /F/Q "%~1"
 If Exist "%~dpn1.tmp" REN "%~dpn1.tmp" "%~nx1"
Exit /B 0

текст инишника



Код:

Код: Выделить всё

[DrWU]
Language=Russian
Boot=0
AutoUpdate=1
Autostart =0
ExitAfterUpdate= 
UseMethod=1
UpdateMethod=0
FTPPassive=0
UpdateTXT=1
UpdateInterval=120
EnableAdditionalPath=0
Source=
UseProxy=0
Proxy=
Destination=.\DrWebUP

ЗЫ. Запостил сообщение и заметил ошибку, параметр autostart отделен пробелом от значения- это уже я эксперементировал и пробовал с пробелом и без...

Убрал в ини файле и ваш совет помог- если сделать пробел между %3 и >> то работает Изображение
Аватара пользователя
Anton04

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Anton04 »

Цитата SendMessage:



%PROGRAMFILES% является переменной среды и уже прописана.
CMD/BAT - Изменить настройки в *.ini файле через *.bat




хм.... действительно, а я то думал что нужно ещё вычислить её... Спасибо за разъяснение. Изображение



Так теперь хочется немного универсальности, что бы можно было запускать прямо из командной строки типа:



edit_ini_file.cmd "%PROGRAMFILES%\Opera\profile\scripts\operaprefs.ini" "User JavaScript File=" "User JavaScript File=%PROGRAMFILES%\Opera\profile\scripts"



т.е. прописывать путь к файлу в котором менять и что менять не редактируя сам скрипт.



Кто поможет в реализации? Изображение
Аватара пользователя
SendMessage

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение SendMessage »

Цитата Anton04:



Так теперь хочется немного универсальности, что бы можно было запускать прямо из командной строки типа:

edit_ini_file.cmd "%PROGRAMFILES%\Opera\profile\scripts\operaprefs.ini" "User JavaScript File=" "User JavaScript File=%PROGRAMFILES%\Opera\profile\scripts"

т.е. прописывать путь к файлу в котором менять и что менять не редактируя сам скрипт.
CMD/BAT - Изменить настройки в *.ini файле через *.bat




Заменить строку

Код:

Код: Выделить всё

CALL :REPLINE "operaprefs.ini" "User JavaScript File=" "User JavaScript File=%PROGRAMFILES%\Opera\profile\scripts"

на

Код:

Код: Выделить всё

CALL :REPLINE %1 %2 %3
Аватара пользователя
Anton04

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Anton04 »

SendMessage,



Странно, но не работает... пишет if not exist... Изображение
Аватара пользователя
SendMessage

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение SendMessage »

Anton04, не могу воспроизвести Вашу ошибку. Создал в папке Internet Explorer ини-файл и прописал в комстроке:

Код:

Код: Выделить всё

z:\iniwrite.bat "%PROGRAMFILES%\Internet Explorer\file.ini" "User JavaScript File=" "User JavaScript File=%PROGRAMFILES%\Opera\profile\scripts"

Все отрабатывает нормально.
Аватара пользователя
Anton04

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Anton04 »

SendMessage,



Странно, но не работает... пишет if not exist... Изображение
Аватара пользователя
SendMessage

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение SendMessage »

Цитата amel27:



коль пошла такая пьянка, до кучи еще вариант:

Код:

@Echo Off

CALL :REPLINE "file.ini" "Server_address=" "Server_address=192.1.1.1"

CALL :REPLINE "file.ini" "Server_port=" "Server_port=8080"

:REPLINE

If Not Exist "%~1" Exit /B 1

If Exist "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp"

Set $N=0& For /F "Delims=:" %%i In ('FindStr /BINRC:" *%~2" "%~1"') Do Set $N=%%i

If %$N% NEQ 0 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ENRC:"$" "%~1"') Do If "%%i"=="%$N%" (

Echo %~3>>"%~dpn1.tmp" ) ELSE Echo.%%j>>"%~dpn1.tmp"

If Exist "%~dpn1.tmp" If Exist "%~1" DEL /F/Q "%~1"

If Exist "%~dpn1.tmp" REN "%~dpn1.tmp" "%~nx1"

Exit /B 0

-------
CMD/BAT - Изменить настройки в *.ini файле через *.bat




Отличный батник, все работает, хочу прикрутить его под свою задачку.

Задача заменить в инишнике ряд параметров, например найти в тексте слово ACTION и заменить на слово Действие. Текущий батник заменяет параметр но удаляет в строчке все что находиться после подмененного значения. Подскажите что нужно изменить в батнике?
Аватара пользователя
Anton04

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Anton04 »

SendMessage,



Видать где-то ошибся в написании %PROGRAMFILES%, переписал заново и всё пошло. Ещё раз спасибо.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»