Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用批处理文件替换第一次出现的文本_Windows_Batch File - Fatal编程技术网

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%%
,如果我没有弄错的话。。。但是,代码不会替换第一个引用,而是替换第一个非空行中的所有引用。。。