Windows 使用批处理文件替换第一次出现的文本
我按照一个在线示例创建了一个批处理文件,该批处理文件将复制给定的文件,同时替换所有出现的字符串。我修改了这个脚本,所以它只替换了第一次出现的内容,但是现在没有打印后续的行,我也不知道为什么。我所做的只是执行一个检查,确定这是否是第一行,如果不是,那么它只是回显该行。我做错了什么Windows 使用批处理文件替换第一次出现的文本,windows,batch-file,Windows,Batch File,我按照一个在线示例创建了一个批处理文件,该批处理文件将复制给定的文件,同时替换所有出现的字符串。我修改了这个脚本,所以它只替换了第一次出现的内容,但是现在没有打印后续的行,我也不知道为什么。我所做的只是执行一个检查,确定这是否是第一行,如果不是,那么它只是回显该行。我做错了什么 set "once=1" if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF for /f "tokens=1,* delims=]" %%A in ('"type %3|fi
set "once=1"
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined once (
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
set "once="
)
) ELSE echo.
)
如果不是的话,它只是在重复“不,你没有”。您回显一个空行(
echo.
应该是echo.%%B
)如果“%~1”==”findstr“^::”“%f0”&转到:EOF,您想对该行做什么?对于/f“delims=“%%X in”(“'echo.”%%line%%”“”)do%%~X,行的目的是什么?@aschipfl如果“%%~1”…
-很可能在没有参数的情况下显示了一些有用的行…,它们不包含在示例中,@Stephan,所以我有点困惑;但我认为你是对的,/f“delims=“%%X…”的调用集…
和行可以用一行调用回显来代替。%%line:%%~1=%%~2%%
,如果我没有弄错的话。。。但是,代码不会替换第一个匹配项,但会替换第一个非空行中的所有匹配项……”如果不是,则只会回显“不,您不需要”。您回显一个空行(echo.
应该是echo.%%B
)如果“%~1”==”findstr“^::”“%f0”&转到:EOF
,您想对该行做什么?对于/f“delims=“%%X in”(“'echo.”%%line%%”“”)do%%~X
,行的目的是什么?@aschipfl如果“%%~1”…
-很可能在没有参数的情况下显示了一些有用的行…,它们不包含在示例中,@Stephan,所以我有点困惑;但我认为你是对的,/f“delims=“%%X…”的调用集…
和行可以用一行调用回显来代替。%%line:%%~1=%%~2%%
,如果我没有弄错的话。。。但是,代码不会替换第一个引用,而是替换第一个非空行中的所有引用。。。