1

我喜欢尽可能多地移植程序/应用程序,因此我会定期创建自动执行的 SFX 存档,将其提取到%temp%然后运行选定的文件(通常是原始的 .exe 或,如果需要,一个 .bat 文件)。

我正在尝试将应用程序的 x86 和 x64 版本合并为一个版本,因为我不喜欢有 2 个文件。因此,我有 2 个文件夹(“x86”和“x64”),其中包含不同版本的程序和根目录中的 .bat 文件,它将检查用户的位数,然后启动适当的版本。不过,我有一些问题。

这是我的代码:

检查并运行.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

如果我使用start,那么原始命令窗口将根据需要正确退出,但会打开一个新的、恒定的命令窗口,并且应用程序不会启动。

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

有没有办法解决这个问题?我以前从来没有遇到过这种问题。

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

4

1 回答 1

6

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

start /B "GCFScape" "x64\GCFScape.exe">nul
于 2012-06-06T20:09:52.087 回答