我正在尝试读取所有文件并替换其中的子字符串。
当我执行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
)
答案 0 :(得分:0)
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!
)