|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить разрядность системы и соответственно выполнить скрипт. |
|
|
CMD/BAT - [решено] Определить разрядность системы и соответственно выполнить скрипт.
|
Пользователь Сообщения: 80 |
Вопрос- как определить разрядность системы, и выполнить соответствующий скрипт.
Так будет правильно? @Echo Off If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" "%Systemdrive%\Program Files\Mozilla Firefox\Firefox.exe" -private" Goto End :Start_x64 Start "Firefox" "%Systemdrive%\Program Files (x86)\Mozilla Firefox\Firefox.exe" -private" Goto End :End |
|
Отправлено: 15:23, 25-06-2016 |
Ветеран Сообщения: 1758
|
Может просто так?
У меня отрабатывает без путей, хотя в %PATH% не прописаны. Нужно разобраться, что там еще есть в: PS. ключи -private и -privatewindow не отрабатывают, браузер запускается в обычном режиме. |
Отправлено: 16:17, 25-06-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 80
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 16:22, 25-06-2016 | #3 |
Ветеран Сообщения: 1758
|
|
Отправлено: 16:30, 25-06-2016 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, есть ещё зависимость из-под какой подсистемы исполнять это. Уже обсуждалось ранее.
|
|
Отправлено: 16:51, 25-06-2016 | #5 |
Ветеран Сообщения: 1758
|
Iska, С %PROCESSOR_ARCHITECTURE% согласен. Но %ProgramFiles(x86)% зависит не от подсистемы, а от разрядности системы.
|
Отправлено: 17:12, 25-06-2016 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, вообще-то, по большому, гамбургскому счёту — нет, не зависит. Точнее, только наличие данного каталога не даёт абсолютной гарантии, что ОС — x64.
|
Отправлено: 17:46, 25-06-2016 | #7 |
Ветеран Сообщения: 1758
|
Iska, да и наличие каталога не дает гарантии.. Наверное нет решения )))
|
Отправлено: 19:49, 25-06-2016 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, меня вариант коллеги gora в принципе устраивает.
|
Отправлено: 22:01, 25-06-2016 | #9 |
Забанен Сообщения: 793
|
А как на счет определения разрядности системы по типу explorer.exe? В смысле прочитать поле MachineType самого PE:
@echo off setlocal enabledelayedexpansion rem получаем полный путь до explorer.exe for %%i in (explorer.exe) do ( if exist "%%~$PATH:i" ( rem ищем в PE поле e_lfanew структуры IMAGE_DOS_HEADER rem длина поля равна четырем байтам, смещение 0x3C for %%j in (C D E F) do ( for /f "tokens=2" %%k in ( 'fc /b "%%~$PATH:i" "%~f0" ^| findstr /rc:"03%%j:"' ) do set "ofs=%%k!ofs!" ) rem пропускаем сигнатуру PE\x00\x00 set /a "ofs=0x!ofs!+4" rem получаем адреса двух байтов поля MachineType rem структуры IMAGE_FILE_HEADER и создаем из них rem строку - эдакий regexp для findstr for /l %%j in (0, 1, 1) do ( cmd /c exit /b !ofs! set "str=!str!!=exitcode! " set /a "ofs+=1" ) rem читаем значения поля MachineType for /f "tokens=2" %%j in ( 'fc /b "%%~$PATH:i" "%~f0" ^| findstr "!str:~0,-1!"' ) do set "mt=%%j!mt!" if "!mt!" equ "014C" echo:x86 if "!mt!" equ "8664" echo:x64 ) ) endlocal exit /b |
Последний раз редактировалось greg zakharov, 26-06-2016 в 10:19. Отправлено: 10:07, 26-06-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - определить версию и разрядность windows и запустить команды | Karbid87 | Скриптовые языки администрирования Windows | 2 | 17-02-2014 13:00 | |
CMD/BAT - [решено] определить разрядность системы и указать путь к хрому | AlterEgoFS | Скриптовые языки администрирования Windows | 4 | 29-12-2013 18:22 | |
Разное - [решено] Как по дистрибутиву определить разрядность ОС? | silalex | Microsoft Windows 8 и 8.1 | 1 | 20-03-2013 12:04 | |
Разное - [решено] Как определить разрядность системы | inf-45 | Microsoft Windows 7 | 7 | 26-08-2011 23:04 | |
Разное - [решено] Как определить разрядность процессора? | Lexolex | Microsoft Windows 7 | 4 | 26-01-2010 18:55 |
|