2

Я хочу сделать пакетный или командный скрипт, который сможет найти подходящую программу для использования в соответствии с архитектурой процессора локальных машин для 32-битных и 64-битных программ.

Одна из программ, с которой я хотел бы попробовать это WinRAR. Я хочу поместить 64-разрядную версию в папку с именем "x64", а 32-разрядную - в папку с надписью "x86" вместе со сценарием.

Я заметил, что некоторые программы, такие как Cheat Engine, имеют 32- и 64-разрядные версии, которые также включают исполняемый файл, который может это делать.

В настоящее время моя единственная цель - переменная %process_architecture% . Это был сценарий, который я сделал, используя оригинальный сценарий @ dbenham :

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

1 ответ1

2

Как я могу найти подходящую программу для использования в соответствии с архитектурой процессора?

Это был сценарий, который я использовал:

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

Заметки:

  • Приведенный выше код, используемый ОП, был взят из этого комментария dbenham.

  • %processor_architew6432% обычно не определяется в 64-битной системе (исключение составляет 32-битный процесс, созданный 64-битным процессом). Смотрите WOW64 Подробности реализации для получения дополнительной информации.

Я обычно использую wmic OS get OSArchitecture чтобы получить битность ОС.

Следующий пакетный файл должен помочь вам начать:

@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

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .