Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить разрядность системы и соответственно выполнить скрипт.

Ответить
Настройки темы
CMD/BAT - [решено] Определить разрядность системы и соответственно выполнить скрипт.

Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: turbolover
Дата: 25-06-2016
Вопрос- как определить разрядность системы, и выполнить соответствующий скрипт.
Так будет правильно?
Код: Выделить весь код
@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
Благодарности: 966

Профиль | Цитировать


Может просто так?
Код: Выделить весь код
start firefox 
start iexplore
У меня отрабатывает без путей, хотя в %PATH% не прописаны. Нужно разобраться, что там еще есть в:
Код: Выделить весь код
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
PS. ключи -private и -privatewindow не отрабатывают, браузер запускается в обычном режиме.

Отправлено: 16:17, 25-06-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
PS. ключи -private и -privatewindow не отрабатывают, браузер запускается в обычном режиме. »
не отрабатывают потому что надо вырубить "Firefox", и потом запускать скрипт.

Отправлено: 16:22, 25-06-2016 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


turbolover, С перезапуском работает. Разрядность можно проверить наличием переменной %ProgramFiles(x86)% или значением %PROCESSOR_ARCHITECTURE%:
Код: Выделить весь код
if defined ProgramFiles(x86) echo x64
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" echo x64
Powershell:
Код: Выделить весь код
if ([intptr]::size -eq 8) { 'x64' }

Отправлено: 16:30, 25-06-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Foreigner, есть ещё зависимость из-под какой подсистемы исполнять это. Уже обсуждалось ранее.

Отправлено: 16:51, 25-06-2016 | #5


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Iska, С %PROCESSOR_ARCHITECTURE% согласен. Но %ProgramFiles(x86)% зависит не от подсистемы, а от разрядности системы.

Отправлено: 17:12, 25-06-2016 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Foreigner, вообще-то, по большому, гамбургскому счёту — нет, не зависит. Точнее, только наличие данного каталога не даёт абсолютной гарантии, что ОС — x64.

Отправлено: 17:46, 25-06-2016 | #7


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Iska, да и наличие каталога не дает гарантии.. Наверное нет решения )))

Отправлено: 19:49, 25-06-2016 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ну, меня вариант коллеги gora в принципе устраивает.

Отправлено: 22:01, 25-06-2016 | #9


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


А как на счет определения разрядности системы по типу 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
А если не усложнять:
Код: Выделить весь код
wmic os get osarchitecture

Последний раз редактировалось greg zakharov, 26-06-2016 в 10:19.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:07, 26-06-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить разрядность системы и соответственно выполнить скрипт.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход