web-dev-qa-db-ja.com

Windows 732および64ビット用のバッチファイル

Windows 7用のバッチファイルを作成する必要があります。この.batファイルは、アプリケーションをインストールするためだけのものです。問題は、Windows 7が32ビットであるか(次に32インストーラーを実行する)、それともWindows 7 64ビットであるか(次に64ビットインストーラーを実行する)を知る必要があることです。 Windows 7が32ビットか64ビットかを知るために、バッチファイルでどのコマンドを使用できますか?

前もって感謝します!!!

8
Javier Marti

64ビット環境では、次のような環境変数があります。

ProgramFiles(x86)

32ビット環境では、その変数はありません。で確認できます

if defined ProgramFiles(x86) (
   REM do stuff for 64bit here
) else (
   REM do stuff for 32bit here
)
10
akira

一時的なtxtファイルを使用したくない場合は、パイプを使用してください。

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry%  | Find /i "x86" 
If %ERRORLEVEL% == 0 (
    GOTO X86
) ELSE (
    GOTO X64
)


:X86

Commands here

GOTO END

:X64

commands here

:End
4
Justin Lockwood

DEFINEDを使用している場合は、変数名を%記号で囲まないでください。

if defined ProgramFiles(x86) (
   :: do stuff for 64bit here
) else (
   :: do stuff for 32bit here
)
3
Maxence

環境変数PROCESSOR_ARCHITECTUREを使用して、プロセス自体が32ビットまたは64ビットのどちらで実行されているかを判別できます。値はAMD64またはx86のいずれかです。

ただし、注意する必要があります。バッチファイルが32ビットバージョンのCMD.EXE(\ Windows\SysWOW64内)から実行されている場合、この変数は「x86」に設定されますが、\ Windows内のCMD.EXEから実行されている場合は「AMD64」に設定されます。 64ビットバージョンのWindowsでは\ System32。

0
Jeremy