Системная переменная, зависимая от разрядности ОС

Обсуждение любых программ, не имеющих отношения к Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Системная переменная, зависимая от разрядности ОС

Сообщение Mellomann »

Есть нечто такого вида: "%PROCESSOR_ARCHITECTURE%" на моей системе возвращает либо "x86" на 32-битной ОС, либо "AMD64" на 64. Всё понятно и логично до тех пор, пока у меня амдовский проц.

Вопрос знатокам от телезрителей:
Какой вариант мне вернёт эта переменная на интеловском проце под х64 ОС и могут ли быть ещё какие-то нестандартные варианты кроме "x86" и "AMD64"? на моей системе возвращает либо

p/s
Всё это добро я планирую использовать в кнопках и меню Тотала, например, для вызова соответствующего варианта AkelPad, RAR и т.п. прог, доступ которых периодически мне нужен к системной папке (тут без х64 никак), но и чтобы ради соседней х86 винды не переписывать ту же конфигу.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Mellomann, WIndows 6 64-bit, %PROCESSOR_ARCHITECTURE% - AMD64. Процессор Intel Core i5
TC 11.58 combo, Windows 11 x64
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

Значение %PROCESSOR_ARCHITECTURE% зависит от запускаемого cmd.exe (32/64)
Выполните (Win+R) две команды:

Код: Выделить всё

C:\Windows\System32\cmd.exe /c set>C:\1.txt
C:\Windows\SysWOW64\cmd.exe /c set>C:\2.txt
и сравните 1.txt с 2.txt
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Тема перенесена в "Программное обеспечение", поскольку сама обсуждаемая системная переменная к TC как таковому отношения не имеет (как её предполагается там использовать — вопрос второй).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher
Странно, но поиск мне ту тему так и не дал вначале...
GGS писал(а):Значение %PROCESSOR_ARCHITECTURE% зависит от запускаемого cmd.exe
М-да... облом.

Как тогда можно иначе задать безусловное определение разрядности винды? Чтоб наверняка (либо 32, либо 64) и без всяких подпунктов, зависимостей...
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Mellomann,
Можно тупо:

Код: Выделить всё

if exist "%SystemRoot%\SysWOW64" ...
Ещё вариант - определить несколько коротких переменных, задающих различия путей к 32-битному экзешнику от пути к 64-битному, например:

Код: Выделить всё

If %SYSINFO_OSARCH% = 64 Then
	SetEnv X64 X64.
Else
	SetEnv X64 .
EndIf
А в кнопке:

Код: Выделить всё

...\RegWorkshop\RegWorkshop%X64%exe
Проблема тут в том, что переменная должна быть непустой, иначе она тупо не раскроется. Можно вообще целиком путь к экзешнику в переменную запихивать и в кнопке просто переменную прописывать.

Код: Выделить всё

If %SYSINFO_OSARCH% = 64 Then
	SetEnv COMMANDER_RegWorkshop ...\RegWorkshop\RegWorkshopX64.exe
Else
	SetEnv COMMANDER_RegWorkshop ...\RegWorkshop\RegWorkshop.exe
EndIf

Код: Выделить всё

%COMMANDER_RegWorkshop%
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

MVV
мне бы отделаться чем-то в таком конечном виде, например:
<...>\\Akelpad_%bit%\\Akelpad.exe
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann
В теме по моей ссылке разве не о том речь (с применением Autorun)?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher
перетаскивание файла на такую кнопку не откроет файл в нужной проге
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann
А зачем лишние движения? Нажать на кнопку быстрей и легче, чем тащить до неё.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher
не всегда нужный файл ассоциирован именно с этой прогой, и далеко не все файлы (иногда нужных расширений) нуждаются в этой асс-и.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann
Как связано с ассоциацией то, что я написал?
А из батника ты ещё можешь так вытащить: wmic os get osarchitecture
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher,
По-моему, вариант с проверкой существования SysWOW64 куда проще - особенно если сравнивать скорость выполнения.
Mellomann писал(а):мне бы отделаться чем-то в таком конечном виде, например:
<...>\\Akelpad_%bit%\\Akelpad.exe
Ну так и определи эту переменную bit в Autorun для каждой разрядности процессора. Главное, чтобы оба значения переменной были непустыми.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Чем же проще, если в Autorun уже есть внутренняя переменная?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить