从批处理文件启动.exe时,奇怪的命令提示符挂起

myt*_*lon 1 windows dos batch-file bit

我喜欢随便携带 - 尽可能多的程序/应用程序,所以我经常创建自动执行的SFX存档,提取到%temp%然后运行选定的文件(通常是原始.exe或必要时的.bat文件).

我正在尝试将应用程序的x86和x64版本组合到一个版本中,因为我不喜欢有2个文件.所以,我有2个文件夹("x86"和"x64"),包含程序的不同版本和根目录中的.bat文件,它将检查用户的位数,然后启动相应的版本.不过,我有几个问题.

这是我的代码:

checkandrun.bat

@echo off
goto Payload

:Payload
    echo Checking architecture bit-type...

    IF EXIST "%systemRoot%\SysWOW64" (
        echo Your version of Windows is 64-bit [x64]
        start "x64\GCFScape.exe" >nul
    ) ELSE (
        echo Your version of Windows is 32-bit [x86]
        start "x86\GCFScape.exe" >nul
    )

    echo.
    echo Starting the appropriate version...

    goto End

:End
    echo.
    echo This window will close in 20 seconds.
    ping localhost -n 21 >nul
    exit
Run Code Online (Sandbox Code Playgroud)

如果我使用start那么原始命令窗口将根据需要正确退出,但会打开一个新的,常量命令窗口,应用程序将无法启动.

如果我不使用start该应用程序启动但命令窗口将保持打开状态,并且不会超过用于启动.exe的代码行.如果我关闭应用程序本身,那么命令窗口将按照exit命令的正常进行并成功关闭.

有办法解决这个问题吗?我以前从未遇到过这种问题.

以下是我的Dropbox中SFX存档的链接,如果有人想要亲自了解环境和效果:https://dl.dropbox.com/u/27573003/Social%20Distribution/gcfscape182.exe

tgo*_*sch 6

START命令的文档说引号中的第一个arg将是窗口的标题.所以,试试这个:

start /B "GCFScape" "x64\GCFScape.exe">nul
Run Code Online (Sandbox Code Playgroud)