代码之家  ›  专栏  ›  技术社区  ›  ItsSuperPlayz

START/WAIT导致执行后出现“More?”(CMD)

  •  0
  • ItsSuperPlayz  · 技术社区  · 1 年前

    我在下面有一个小脚本,我上传到GitHub来自动化一些流程:

    脚本.bat (已上传到GitHub)

    @echo off
    set "folder=%random%%random%%random%"
    mkdir "%temp%\%folder%"
    cd "%temp%\%folder%"
    curl --silent <link> >mainfile.bat
    curl --silent <link> >mainfile2.bat
    curl --silent <link> >mainfile3.bat
    curl --silent <link> >mainfile4.bat
    curl --silent <link> >mainfile5.bat
    ::some tasks involving downloaded batch files here...
    del mainfile3.bat
    del mainfile4.bat
    del mainfile5.bat
    start /wait mainfile.bat 2>nul
    rmdir "%temp%\%folder%"
    

    我通过运行 curl --silent https://raw.githubusercontent.com/***/***/main/script.bat|cmd /q /k 在我的电脑上。

    问题是,我看到了 More? 在控制台的最后,我不知道为什么。尝试使用再次运行脚本 |cmd /k 看到它发生在 start /wait mainfile.bat 2>nul .

    这以前不是一个问题,我无法找出问题的原因。

    0 回复  |  直到 1 年前
        1
  •  2
  •   Compo    1 年前

    下面是一个根据您发布的内容的批处理脚本示例,其中包含正确的 Call 命令,(而不是 Start ),以及其他改进。

    @Echo Off
    SetLocal EnableExtensions DisableDelayedExpansion
    
    :TmpDir
    Set "folder=%Temp%\%RANDOM%%RANDOM%%RANDOM%"
    
    If Exist "%folder%\." (GoTo TmpDir) Else MD "%folder%" 2>NUL
    
    PushD "%folder%" 2>NUL || Exit /B
    
    %SystemRoot%\System32\curl.exe --silent "https://raw.githubusercontent.com/***" 1>"mainfile.cmd"
    %SystemRoot%\System32\curl.exe --silent "https://raw.githubusercontent.com/***" 1>"mainfile2.cmd"
    %SystemRoot%\System32\curl.exe --silent "https://raw.githubusercontent.com/***" 1>"mainfile3.cmd"
    %SystemRoot%\System32\curl.exe --silent "https://raw.githubusercontent.com/***" 1>"mainfile4.cmd"
    %SystemRoot%\System32\curl.exe --silent "https://raw.githubusercontent.com/***" 1>"mainfile5.cmd"
    
    Rem some tasks involving downloaded batch files here...
    
    Del /Q "mainfile3.cmd" "mainfile4.cmd" "mainfile5.cmd"
    Call "mainfile.cmd" 2>NUL
    
    PopD
    
    RD "%folder%"
    

    我应该补充一点,如果您正在运行脚本 mainfile2.cmd , mainfile3.cmd , mainfile4.cmd mainfile5.cmd 在你之前 Del 删除它们,用 呼叫 mainfile.cmd 展示。

    然而,应该注意的是,您的 呼叫 ed脚本应终止于 Exit ,(如果有,请将其拆下,或者如有必要,将其更换为 Exit /B GoTo :EOF ).

    我还应该提到,如果脚本 mainfile3.cmd , mainfile4.cmd 主文件5.cmd 中的glob/通配符不应该忽略的内容 mainfile.cmd ,您可以删除 德尔 行,(因为这些将由 RD 命令)。

    推荐文章