Страница 1 из 2
Системная переменная, зависимая от разрядности ОС
Добавлено: Вт фев 12, 2013 00:24
Mellomann
Есть нечто такого вида: "%PROCESSOR_ARCHITECTURE%" на моей системе возвращает либо "x86" на 32-битной ОС, либо "AMD64" на 64. Всё понятно и логично до тех пор, пока у меня амдовский проц.
Вопрос знатокам от телезрителей:
Какой вариант мне вернёт эта переменная на интеловском проце под х64 ОС и могут ли быть ещё какие-то нестандартные варианты кроме "x86" и "AMD64"? на моей системе возвращает либо
p/s
Всё это добро я планирую использовать в кнопках и меню Тотала, например, для вызова соответствующего варианта AkelPad, RAR и т.п. прог, доступ которых периодически мне нужен к системной папке (тут без х64 никак), но и чтобы ради соседней х86 винды не переписывать ту же конфигу.
Добавлено: Вт фев 12, 2013 00:28
jentoso
Mellomann, WIndows 6 64-bit, %PROCESSOR_ARCHITECTURE% - AMD64. Процессор Intel Core i5
Добавлено: Вт фев 12, 2013 08:44
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
Добавлено: Вт фев 12, 2013 08:56
Avada
Тема перенесена в "Программное обеспечение", поскольку сама обсуждаемая системная переменная к TC как таковому отношения не имеет (как её предполагается там использовать — вопрос второй).
Добавлено: Вт фев 12, 2013 12:43
Flasher
Добавлено: Вт фев 12, 2013 21:32
Mellomann
Flasher
Странно, но поиск мне ту тему так и не дал вначале...
GGS писал(а):Значение %PROCESSOR_ARCHITECTURE% зависит от запускаемого cmd.exe
М-да... облом.
Как тогда можно иначе задать безусловное определение разрядности винды? Чтоб наверняка (либо 32, либо 64) и без всяких подпунктов, зависимостей...
Добавлено: Вт фев 12, 2013 22:43
MVV
Mellomann,
Можно тупо:
Ещё вариант - определить несколько коротких переменных, задающих различия путей к 32-битному экзешнику от пути к 64-битному, например:
Код: Выделить всё
If %SYSINFO_OSARCH% = 64 Then
SetEnv X64 X64.
Else
SetEnv X64 .
EndIf
А в кнопке:
Проблема тут в том, что переменная должна быть непустой, иначе она тупо не раскроется. Можно вообще целиком путь к экзешнику в переменную запихивать и в кнопке просто переменную прописывать.
Код: Выделить всё
If %SYSINFO_OSARCH% = 64 Then
SetEnv COMMANDER_RegWorkshop ...\RegWorkshop\RegWorkshopX64.exe
Else
SetEnv COMMANDER_RegWorkshop ...\RegWorkshop\RegWorkshop.exe
EndIf
Добавлено: Вт фев 12, 2013 23:19
Mellomann
MVV
мне бы отделаться чем-то в таком конечном виде, например:
<...>\\Akelpad_%bit%\\Akelpad.exe
Добавлено: Вт фев 12, 2013 23:32
Flasher
Mellomann
В теме по моей ссылке разве не о том речь (с применением Autorun)?
Добавлено: Ср фев 13, 2013 00:16
Mellomann
Flasher
перетаскивание файла на такую кнопку не откроет файл в нужной проге
Добавлено: Ср фев 13, 2013 00:17
Flasher
Mellomann
А зачем лишние движения? Нажать на кнопку быстрей и легче, чем тащить до неё.
Добавлено: Ср фев 13, 2013 00:39
Mellomann
Flasher
не всегда нужный файл ассоциирован именно с этой прогой, и далеко не все файлы (иногда нужных расширений) нуждаются в этой асс-и.
Добавлено: Ср фев 13, 2013 00:44
Flasher
Mellomann
Как связано с ассоциацией то, что я написал?
А из батника ты ещё можешь так вытащить: wmic os get osarchitecture
Добавлено: Ср фев 13, 2013 09:12
MVV
Flasher,
По-моему, вариант с проверкой существования
SysWOW64 куда проще - особенно если сравнивать скорость выполнения.
Mellomann писал(а):мне бы отделаться чем-то в таком конечном виде, например:
<...>\\Akelpad_%bit%\\Akelpad.exe
Ну так и определи эту переменную
bit в Autorun для каждой разрядности процессора. Главное, чтобы оба значения переменной были непустыми.
Добавлено: Ср фев 13, 2013 12:24
Flasher
MVV
Чем же проще, если в Autorun уже есть внутренняя переменная?