Как заменить две строки текста в файле с помощью пакетного скрипта - PullRequest
0 голосов
/ 01 октября 2018

Мне нужно заменить две строки в текстовом файле.Я написал скрипт, который заменяет одну строку:

@echo off
setlocal enabledelayedexpansion

rem file name
Set infile=file.txt

rem what to find
Set find=123

rem value to replace
Set replace=321

@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>tmp.txt
)
move tmp.txt %infile%
pause

Как изменить его, чтобы заменить 2 строки одновременно?Я имею в виду «найти» для «замены» и «найти2» для «замены2»?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Нет ли другого способа передать значение 2 в функцию, которая ищет строку свойства и заменяет значение?например:

код:

CALL :modify prop.first.name , myName
CALL :modify prop.last.name , myLastName
:modify

set "source=srcFile.txt"
set "target=tmpFile.txt"

set property=%~1
set value=%~2

setlocal enableDelayedExpansion
(
for /F "tokens=1* delims==" %%a in ('findstr /B "^" %source%') do (
  set line=%%b
  if defined line echo !line:%property%=%property%=%value%!
)
) > %target%
 endlocal

исходный файл выглядит следующим образом:

prop.first.name = имя

prop.last.name = фамилия

prop.pssw.word = пароль

prop.url.link = alink

необходимо заменить значение после знака равенства "=" на входе

идея состоит в том, чтобы вызывать универсальную функцию 4 раза с разными параметрами

0 голосов
/ 04 октября 2018

после вашего set TMPR=..., добавьте set TMPR=!TMPR:%find2%=%replace2%!:

@echo off
setlocal enabledelayedexpansion
del tmp.txt
rem file name
Set infile=file.txt

rem what to find
Set find=abc
set find2=def

rem value to replace
Set replace=123
set replace2=456

for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
set TMPR=!TMPR:%find2%=%replace2%!
Echo !TMPR!>>tmp.txt
)
type tmp.txt

file.txt:

aaa
abc
bbb
def
ccc
xxxabcyyy
uuudefvvv
nnnabcdefmmm

Вывод:

aaa
123
bbb
456
ccc
xxx123yyy
uuu456vvv
nnn123456mmm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...