Это легко достижимая задача с использованием JREPL.BAT , написанного Дейвом Бенхамом , который представляет собой гибрид пакетного файла / JScript для выполнения замены регулярного выражения в файле с использованием JScript..
@echo off
if not exist "test.txt" goto :EOF
if not exist "%~dp0jrepl.bat" goto :EOF
call "%~dp0jrepl.bat" "(tenant_id *= *)1234" "$1649" /F "test.txt" /O -
Пакетный файл сначала проверяет, существует ли вообще изменяемый файл, и сразу же завершает работу, если это условие не выполняется, см. Куда возвращается GOTO: EOF?
Пакетный файл JREPL.BAT должен храниться в том же каталоге, что и пакетный файл с кодом выше.По этой причине пакетный файл проверяет следующее, действительно ли JREPL.BAT существует в каталоге пакетного файла, и завершает работу, если это условие не выполняется.
Значение строки поиска регулярного выражения::
(
... )
... Найти строку, на которую есть ссылка в строке замены, с $1
, чтобы сохранить эту часть найденной строки без изменений, начиная с tenant_id
... строка с учетом регистра tenant_id
*
... с 0 или более пробелами =
... и знаком равенства *
... и еще раз 0 или более пробелов 1234
... и символы 1234
.
Строка замены ссылается на найденнуюстрока, начинающаяся с tenant_id
и заканчивающаяся перед номером 1234
на $1
и заменяющая 1234
на 649
.
Можно также использовать регулярное выражение \d+
вместо 1234
в строке поиска, чтобы найти любое число с одной или несколькими цифрами.
Для понимания используемых команд и как ониработать, открыть окно командной строки, выполнить там следующие команды и полностью прочитать все страницы справки, отображаемые для каждой команды.
call /?
... объясняет также %~dp0
...диск и путь аргумента 0, который является путем к пакетному файлу, который всегда заканчивается обратной косой чертой. echo /?
goto /?
if /?
jrepl.bat /?