我目前正在尝试编写一个脚本,以便在文件中找到一个句子,并用另一个句子替换该行。 我已经做到了:
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=@Interceptors({ RuntimeExceptionInterceptor.class })"
set "replace=@Interceptors({ RuntimeExceptionInterceptor.class, ReportInterceptor.class })"
set "textFile=test2.txt"
for /f %%i %%f in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i %%f"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
但是它不起作用,这个脚本无法用我想要的那个替换我的第一行,你能帮我吗?)?
答案 0 :(得分:1)
为什么不将sed
命令与-i
标志一起使用?这听起来像是为这个工具制作的
答案 1 :(得分:0)
使用不同的方法而不是批处理文件更容易解决问题。据推测,您正在使用Java IDE进行开发。使用其全球替换设施;例如在IntelliJ IDEA中,使用选项"替换路径..."。
答案 2 :(得分:0)
您的代码中存在一些错误:
"tokens="
,您可以在使用"delims="
列出的字符中拆分输入时定义更多内容。请参阅help for
^
转义它们。@echo off
setlocal enableextensions Disabledelayedexpansion
:: take care the closing parenthesis has to be escaped with a caret
set "search=@Interceptors({ RuntimeExceptionInterceptor.class }^)"
set "replace=@Interceptors({ RuntimeExceptionInterceptor.class, ReportInterceptor.class }^)"
set "textFile=test2.txt"
set "text_new=test2.new"
( for /f "Delims=" %%i in (
'type "%textFile%" '
) do (
set "line=%%i"
Call echo:%%line:%search%=%replace%%%
)
) > "%text_new%"
type "%text_new%"
为您保留更换旧文件。