批处理脚本 - >找一个句子并用一个新的替换它

时间:2017-07-11 08:43:24

标签: batch-file

我正在使用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

1 个答案:

答案 0 :(得分:0)

不确定textfile设置与例程有什么关系 - 它没有被使用。

您的原始代码产生的投诉未找到&,并为我创建了一个空文件。

for更改为

for /f "Delims=" %%i  in ('type "%%a" ^& break ^> "%%a"') do (
如果您提供的源文件有一行(部分?),加上一些虚线,

似乎会进行替换。

执行带有引号括起的文件名的type...,以确保使用分隔符正确操作,替换文件;按规定替代。