web-dev-qa-db-ja.com

それに応じて、バッチスクリプトに32ビットまたは64ビットのプログラムを実行させることはできますか?

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"
3
Mr. Mendelli

プロセッサアーキテクチャに従って使用する適切なプログラムを見つけるにはどうすればよいですか?

これは私が使用したスクリプトでした:

echo %processor_architecture%%processor_architew6432% | findstr 64 >nul && set "prog=x64\WinRAR x64.exe" || set "prog=x86\WinRAR x86.exe"

ノート:

  • OPで使用される上記のコードは、 このコメント から dbenham によって取得されました。

  • %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

参考文献

2
DavidPostill