Замена содержимого ini-файла на командный файл - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь использовать пакетный файл, чтобы найти IP-адрес в INI-файле в заданном каталоге и изменить его на новый адрес.Я подаю в суд на этот вопрос в качестве источника.

Сценарии выполняются без ошибок, однако он создает файл замены, который является пустым и также является файлом .bat, в отличие от файла .ini.

Сценарий:

set "file=M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini"

:loop
findstr "^ipaddress=193.120.187.44$" "%file%" >nul || (
type "%file%" | repl "^ipaddress=193.120.187.44=.*" "ipaddress=193.120.187.110" >"%file%.tmp"
move "%file%.tmp" "%file%" >nul
)
ping -n 120 localhost >nul
goto :loop

Команда rpl берется из вспомогательного файла, источник здесь .

Содержимое файла testIPCOnfig.ini:

ipaddress = 193.129.187.44

Цените любые отзывы.

ОБНОВЛЕННЫЙ СКРИПТС ОБНОВЛЕННЫМ ПОМОЩЬЮ JREPL:

rem Check if the helper file is in same directory, if not exit


if not exist "%~dp0JREPL.bat" goto :EOF
rem if not exist "M:\Haem\C.Mooney\cmooney\apex\Scripts\IPChange\testIPCOnfig.txt" goto :EOF


rem call te helper JREPL>BAT to search for ipaddress and change it 

call "%~dp0JREPL.bat" "^ipaddress=\d+\.\d+\.\d+\.\d+" "ipaddress=193.120.187.110" /F "M:\Haem\C.Mooney\cmooney\apex\Scripts\IPChange\testIPCOnfig.txt" /O -

Содержимое тестаIPCOnfig.txt:

ipaddress = 193.120.187.44

Возвращает следующую ошибку:

Ошибка выполнения JScript при открытии входного файла: файл не найден

1 Ответ

0 голосов
/ 22 января 2019

REPL.BAT написано Дейв Бенхам устарело и заменено JREPL.BAT также написано Дейв Бенхам , который является пакетный файл / гибрид JScript для выполнения замены регулярного выражения в файле с использованием JScript.

@echo off
if not exist "%~dp0jrepl.bat" goto :EOF
if not exist "M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini" goto :EOF

call "%~dp0jrepl.bat" "^ipaddress=\d+\.\d+\.\d+\.\d+" "ipaddress=193.120.187.110" /F "M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini" /O -

Пакетный файл JREPL.BAT должен храниться в том же каталоге, что и пакетный файл с кодом выше. По этой причине пакетный файл сначала проверяет, действительно ли JREPL.BAT существует в каталоге пакетного файла, и завершает работу, если это условие не выполняется.

Затем пакетный файл проверяет наличие изменяемого файла INI и завершает работу, если этот файл вообще не существует. См. Куда возвращается GOTO: EOF?

Затем JREPL.BAT вызывается для поиска строки, начинающейся с ipaddress= и четырех чисел с одной точкой между числами, и заменяет эти строки указанной строкой замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...