我正在使用DOS脚本来搜索一行并将其替换为特定文件夹中的文件。这是我已经做过的事情:
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=@Interceptors({ RuntimeExceptionInterceptor.class }^)"
set "replace=@Interceptors({ RuntimeExceptionInterceptor.class, ReportInterceptor.class, CorrelationIdInterceptor }^)"
set "textFile=C:\Utilisateurs\a669884\Documents\test.txt"
for %%a in (*.txt) do (
echo "%%a"
for /f "Delims=" %%i in (%%a ^& break ^> %%a) do (
set "line=%%i "
setlocal enabledelayedexpansion
>>%%a echo(!line:%search%=%replace%!
endlocal
)
)
问题是我的第一行没有被新的替换,新的行被添加到它下面:
@Interceptors({RuntimeExceptionInterceptor.class})
@Interceptors({RuntimeExceptionInterceptor.class,ReportInterceptor.class,CorrelationIdInterceptor})
你知道为什么我的第一行没有被替换吗?非常感谢 SEB
答案 0 :(得分:0)
不确定textfile
设置与例程有什么关系 - 它没有被使用。
您的原始代码产生的投诉未找到&
,并为我创建了一个空文件。
将for
更改为
for /f "Delims=" %%i in ('type "%%a" ^& break ^> "%%a"') do (
如果您提供的源文件有一行(部分?),加上一些虚线,似乎会进行替换。
执行带有引号括起的文件名的type...
,以确保使用分隔符正确操作,替换文件;按规定替代。