32ビットおよび64ビットプログラムのローカルマシンプロセッサアーキテクチャに従って使用する適切なプログラムを見つけることができるバッチまたはコマンドスクリプトを作成したいと思います。
これを試してみたいプログラムの1つは、 WinRAR です。 64ビットバージョンを「x64」というフォルダーに配置し、32ビットバージョンを「x86」というラベルの付いたフォルダーに、これらのフォルダーのほかにスクリプトとともに配置したいと思います。
Cheat Engine などの一部のプログラムには、32ビットおよび64ビットバージョンがあり、またに実行可能ファイルが含まれていることに気付きました。これを行う。
現在、私の唯一のリードは%process_architecture%
変数。これは私が使用して作成したスクリプトでした @ dbenham's 元のスクリプト:
echo %processor_architecture%%processor_architew6432% | findstr 64 >nul && set "prog=x64\WinRAR x64.exe" || set "prog=x86\WinRAR x86.exe"
これは私が使用したスクリプトでした:
echo %processor_architecture%%processor_architew6432% | findstr 64 >nul && set "prog=x64\WinRAR x64.exe" || set "prog=x86\WinRAR x86.exe"
ノート:
%processor_architew6432%
は通常、64ビットシステムでは未定義です(例外は、32ビットプロセスが64ビットプロセスによって作成される場合です)。詳細については、 WOW64実装の詳細 を参照してください。
私は通常、wmic OS get OSArchitecture
を使用してOSのビット数を取得します。
次のバッチファイルで開始できます。
@echo off
setlocal enabledelayedexpansion
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
set "_bits=%%i"
rem remove spaces
set "_bits=!_bits: =!"
)
if "%_bits%" EQU "64-bit" (
rem 64bit OS
set "prog=x64\WinRAR x64.exe"
) else (
rem 32bit OS
set "prog=x86\WinRAR x86.exe"
)
rem do something with %prog%
call %prog%
endlocal