1

私はできるだけ多くのプログラムやアプリをポータブル化するのが好きなので%temp%、選択したファイル (通常は元の .exe、または必要に応じて .bat ファイル) に展開して実行する自己実行 SFX アーカイブを定期的に作成しています。

2 つのファイルを持つのが好きではないため、アプリの x86 バージョンと x64 バージョンを 1 つのバージョンに結合しようとしています。そのため、異なるバージョンのプログラムを含む 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

使用する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 に答える