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

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

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

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


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

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


Как проверить разрядность операционной системы?

У виндоуз 7 есть 2 версии: 64-х разрядная и 32-х разрядная.

Для 64-х разрядной нужно, чтобы выполнялись дополнительные программы. Как это сделать в коммандом файле?

Отправлено: 22:50, 08-04-2010

 

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


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

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


в реестре ветки добавляются у 64-х, но как проверить?

Отправлено: 22:52, 08-04-2010 | #2



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

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


Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
:: Варианит 1
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Echo %xOS%
Pause

:: ===================================================================================
:: Варианит 2
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
Echo %xOS%
Pause

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок с именами x64 и x86
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\%xOS%\install.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из одной папки с именами сожержащими суффикс x64 и x86 (install_x64.exe и install_x86.exe)
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\install_%xOS%.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок, с разными именами и/или ключами
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
If %xOS%==x86 ("c:\My Test\i86\install.exe" /S) Else ("c:\My Test\AMD64\setup.msi" /qn)

Последний раз редактировалось gora, 24-01-2013 в 09:08. Причина: добавил решения для часто повторяющихся вопросов

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

Отправлено: 22:53, 08-04-2010 | #3


Аватара для seriych

Старожил


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

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


Так покороче:
Код: Выделить весь код
set xOS=x86
if DEFINED ProgramFiles(x86) set xOS=x64
Возможно, вариант, предложенный gora, корректнее, но я не видел 32-битных систем с определенной системной переменной ProgramFiles(x86) и во всех x64 системах, которые я видел, эта переменная определена. Я определяю именно так.

-------
* Книгой можно не только стаканчик с лапшой накрывать. ©

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

Отправлено: 23:55, 08-04-2010 | #4


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


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

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


PATH %PATH%;q:;w:;e:;r:;t:;y:;u:;i:;o:;p:;a:;s:;d:;f:;g:;h:;j:;k:;l:;z:\;x:;c:;v:;b:;n:;m:;
"%WINDIR%\regedit.exe" /s 32x.reg
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
if "%xOS%"=="x64" "%WINDIR%\regedit.exe" /s 64x.reg

в реестр ничего не добавляет, а если убрать /s то предлагает добавить в реестр, что требует действия пользователя, что неудобно. Как убрать запрос?
64x.reg находится на сетевом диске z:\

Отправлено: 14:00, 09-04-2010 | #5


Аватара для gora

Ушёл из жизни


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

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


SvoiLudi, на форуме
Цитата:
темы организуются по принципу ''одна проблема – одна тема''.
На Ваш вопрос в заголовке темы ответ уже дан, для нового вопроса откройте новую тему и постарайтесь его правильно сформулировать, примерно так: "Как на 64-разрядной системе внести данные из reg файла, находящегося на сетевом диске z:\, в реестр с помощью bat файла запущенного (откуда? с правами администратора?) в 32 (64)-разрядной среде? Reg файл прикрепил."

Отправлено: 15:10, 09-04-2010 | #6


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


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

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


Извините, если не в тему, но не получается корректно обработать запуск программы в зависимости от разрядности системы
Пример:
PHP код: Выделить весь код

@ECHO OFF

SET ProgName
=WinRar
SET ProgVer
=4.20 Beta 3
SET FileNameX86
=wrar420b3ru.exe
SET FileNameX64
=winrar-x64-420b3ru.exe
SET FileName
=
SET PFPath=
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A

IF EXIST "%ProgramFiles(x86)%" (
    IF 
DEFINED FileNameX64 (
        
SET FileName=%FileNameX64%
        
SET PFPath=%PROGRAMFILES%
    ) ELSE (
        
SET FileName=%FileNameX86%
        
SET PFPath=%PROGRAMFILES(x86)%
    )
) ELSE (
    
SET FileName=%FileNameX86%
    
SET PFPath=%PROGRAMFILES%
)

ECHO 
Импорт настроек
ECHO.
regedit /S Settings.reg
ECHO.

START /WAIT %FileName% /S

ECHO Установка завершена
ECHO. 

Задача: создать почти универсальный установочный bat-файл. Менять только значение переменных в самом начале
В данном скрипте почему-то съедается скобка в пути у Programm Files (x86

Отправлено: 12:34, 01-06-2012 | #7


Аватара для gora

Ушёл из жизни


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

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


Цитата vcrank:
почему-то съедается скобка в пути у Programm Files (x86 »
Попробуйте так:
Код: Выделить весь код
@ECHO OFF
SET ProgName=WinRar
SET ProgVer=4.20 Beta 3
SET FileNameX86=wrar420b3ru.exe
SET FileNameX64=winrar-x64-420b3ru.exe
SET FileName=
SET PFPath=
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64

SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES(x86)%

IF %xOS%==x64 (
    IF DEFINED FileNameX64 (
        SET FileName=%FileNameX64%
        SET PFPath=%PROGRAMFILES%
    )
) ELSE (
    SET FileName=%FileNameX86%
    SET PFPath=%PROGRAMFILES%
)

ECHO PFPath=%PFPath%
ECHO FileName=%FileName%
Pause

Отправлено: 08:21, 07-06-2012 | #8


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


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

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


Цитата gora:
Попробуйте так: »
На системе X86 выдёт
всё как и положено, а вот на x64
Выдёт всё равно путь и имя файла как для системы x86 (Program Files (x86) и wrar420b3ru.exe)

Такое ощущение, что условие ELSE срабатывает в любом случае
Пока делаю костыль с добавлением GoTo

Отправлено: 14:17, 07-06-2012 | #9


Аватара для gora

Ушёл из жизни


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

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


Тогда так:
Код: Выделить весь код
@ECHO OFF
SET ProgName=WinRar
SET ProgVer=4.20 Beta 3
SET FileNameX86=wrar420b3ru.exe
SET FileNameX64=winrar-x64-420b3ru.exe
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A

Call :_Set_Var

ECHO xOS=%xOS%
ECHO PFPath=%PFPath%
ECHO FileName=%FileName%
Pause

:_Set_Var
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES%
IF %xOS%==x86 GoTo :EOF
SET PFPath=%PROGRAMFILES(x86)%
IF Not DEFINED FileNameX64 GoTo :EOF
SET FileName=%FileNameX64%
SET PFPath=%ProgramW6432%
GoTo :EOF
Так не должно зависеть от среды запуска (х86\х64) на х64 ОС

Последний раз редактировалось gora, 07-06-2012 в 15:15.

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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как убрать меню выбора операционной системы? trimo Microsoft Windows 2000/XP 84 26-01-2010 21:57
Вопрос - Как можно проверить был взлом системы или просто зашли под другим пользователем? ИС_ Защита компьютерных систем 0 24-09-2009 16:52
как узнать разрядность системы DIMON171 Хочу все знать 20 28-06-2008 19:57
Как убрать меню выбора операционной системы Guest Microsoft Windows 95/98/Me (архив) 1 10-09-2004 14:11
Разрядность операционной системы ankerok Хочу все знать 7 09-01-2003 16:45




 
Переход