Невозможно изменить более одной строки в файле bat - PullRequest
1 голос
/ 15 марта 2011

Я пытаюсь прочитать все файлы и заменить подстроки в нем. когда я запускаю bat-файл, выполняется только первая команда т.е. SET modified=!string:%oldstr1%=%newstr1%!

остальные 2 команды не выполняются

SET modified=!string:%oldstr2%=%newstr2%!

SET modified=!string:%oldstr3%=%newstr3%!

КОД КАК СЛЕДУЕТ

@echo off

setlocal enabledelayedexpansion

set LOCATION=D:\CODE_temp\RUNTIME_DATA\

set OUTTEXTFILE=test_out.txt

set oldstr1=workflow.actions

set newstr1=process.activities

set oldstr2=CallWorkflow

set newstr2=CallProcess

set oldstr3=SetWorkflowVariable

set newstr3=SetProcessVariable


FOR /r %LOCATION% %%x IN (*.txt) do (

FOR /f "tokens=1,* delims=¶" %%A in ('"type %%x"') do (

SET string=%%A

SET modified=!string:%oldstr1%=%newstr1%!

SET modified=!string:%oldstr2%=%newstr2%!

SET modified=!string:%oldstr3%=%newstr3%!

echo !modified! >> %OUTTEXTFILE%
)

del %%x

copy %OUTTEXTFILE% %%x

del %OUTTEXTFILE%

echo location  %%x >> Enosh_log.txt

)

1 Ответ

0 голосов
/ 15 марта 2011

Хм, что вы ожидаете?
Вы всегда заменяете строку в исходном string и устанавливаете ее в переменную modified.
Таким образом, вы всегда перезаписываете одну и ту же переменную.

Лучше вы должны использовать что-то вроде этого

FOR /f "tokens=1,* delims=¶" %%A in ('"type %%x"') do (
  SET "string=%%A"
  SET "modified=!string:%oldstr1%=%newstr1%!"
  SET "modified=!modified:%oldstr2%=%newstr2%!"
  SET "modified=!modified:%oldstr3%=%newstr3%!"
   >> %OUTTEXTFILE% echo !modified!
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...