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

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

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

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


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

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


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

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

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

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

 

Аватара для Elven

Ветеран


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

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


И охота же некропостерствовать...
Начнем с начала: поддержка win7 закончилась еще в январе 2020, посему сначала рекомендация: избавляйтесь от них. И чем быстрее тем лучшее.
Цитата Wu-Tang:
о срабатывает там, а там нет, то наоборот »
Это как-то не особенно информативно. Лучше подробнее описывать что именно не срабатывает и что пробовалось.

Далле, судя по тому что нужно, достаточно проверить наличие/значение переменной %ProgramFiles(x86)%. Если есть - суем вариант для x64, нету - x86.
Код: Выделить весь код
if defined %ProgramFiles(x86)% (
echo reg add x64
) else (
echo reg add x86
)
винды опять нет под рукой, поэтому не проверял как оно проверяет.

И еще, проще и надежнее добавлять ключи через те же групповые политики, это позволит и точнее прицелится в нужную разрядность, и позволит избежать подобных проверок на непонятно зачем.

Отправлено: 16:40, 05-05-2021 | #91



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

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


Аватара для Wu-Tang

Ветеран


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

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


Elven,
Мне нравится 7-ка, я на хп сидел пока стало невыносимо )))
мне батником нужно добавить.

Код: Выделить весь код
@echo off
if defined %ProgramFiles(x86)% (
echo 
reg add "HKCR\*\shell\notepad" /v "" /t REG_SZ /d "ЋвЄалвм ў Ѓ«®Є*®вҐ" /f
reg add "HKCR\*\shell\notepad" /v "icon" /t REG_SZ /d "%ProgramFiles(x86)%\Notepad++\notepad++.exe,0" /f
reg add "HKCR\*\shell\notepad\command" /v "" /t REG_SZ /d "\"%ProgramFiles(x86)%\Notepad++\notepad++.exe\" \"%%1\"" /f
) else (
echo 
reg add "HKCR\*\shell\notepad" /v "" /t REG_SZ /d "ЋвЄалвм ў Ѓ«®Є*®вҐ" /f
reg add "HKCR\*\shell\notepad" /v "icon" /t REG_SZ /d "%ProgramFiles%\Notepad++\notepad++.exe,0" /f
reg add "HKCR\*\shell\notepad\command" /v "" /t REG_SZ /d "\"%ProgramFiles%\Notepad++\notepad++.exe\" \"%%1\"" /f  
)
на х64 оси записало путь ProgramFiles вместо ProgramFiles(х86).

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 17:15, 05-05-2021 | #92


Аватара для Elven

Ветеран


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

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


Нужно смотреть, что в переменных. Емнип в win7 была какая-то муть относительно того, какой процесс запущен (т.е. в зависимости от разрядности процесса переменная может поменять значение), т.о. из батника нужно вывести значение переменных ProgramFiles, ProgramFiles(x86), ProgramW6432 и посмотреть какая из них что возвращает. Что-то мне кажется, что для запуска из cmd ProgramFiles вернет значение "C:\Program Files (x86)", но это не точно.
Собственно, совать в reg add переменные я и не требовал, вполне бы нормально сработали и изначально указанные пути.

Отправлено: 17:53, 05-05-2021 | #93


Ветеран


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

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


Цитата Elven:
Емнип в win7 была какая-то муть относительно того, какой процесс запущен »
Так всегда было. Так и осталось.

Цитата Elven:
Что-то мне кажется, что для запуска из cmd ProgramFiles вернет значение "C:\Program Files (x86)", но это не точно. »
Только если запущен x86 cmd.exe.

Скрытый текст


Wu-Tang, тут ещё зависит, какой разрядности запускается сам reg.exe — на него ведь точно так же действуют перенаправления файловой системы и реестра.

Отправлено: 18:26, 05-05-2021 | #94


Аватара для Wu-Tang

Ветеран


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

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


Elven,
так какой есть выход?
Iska,
я так понимаю в 32битной запускается 32битный, а вот в 64битной хз, либо тот, либо другой.
есть какое-н решение в этой задаче?
сейчас у меня есть специально две виртуалки х86 и х64, тестирую параллельно внося правки, но либо там не отрабатывает, либо там.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 07:37, 06-05-2021 | #95


Ветеран


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

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


Цитата Wu-Tang:
есть какое-н решение в этой задаче? »
Есть. Оно изложено в этой теме.

Цитата Wu-Tang:
но либо там не отрабатывает, либо там. »
Не может не отрабатывать. Значит, Вы что-то не так делаете. Опишите подробно, как именно Вы делаете.

Отправлено: 08:03, 06-05-2021 | #96


Аватара для Wu-Tang

Ветеран


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

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


Iska,
ну как ни так, я привел скрипт, который запускаю, сказали все правильно.
x86 - https://dropmefiles.com/1bUOi
x64 - https://dropmefiles.com/fM9ES
в х86 обрезает путь после добавления в реестр.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Последний раз редактировалось Wu-Tang, 06-05-2021 в 09:16.


Отправлено: 09:10, 06-05-2021 | #97


Аватара для Elven

Ветеран


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

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


Два варианта:
1. вбить пути без переменных (рили, они здесь нужны как собаке пятый хвост);
2. добавить вывод переменных %ProgramFiles(x86)% и %ProgramFiles% с паузой в конец скрипта, меня терзают смутные сомнения, что под x86 она либо пустая либо еще что-то с ней не так.

Код: Выделить весь код
echo "ProgramFiles(x86): %ProgramFiles(x86)%"
echo "ProgramFiles: %ProgramFiles%" 
pause
Или без паузы, но выводить в файл

Код: Выделить весь код
echo "ProgramFiles(x86): %ProgramFiles(x86)%" > vars.txt
echo "ProgramFiles: %ProgramFiles%" >> vars.txt
Или вывод доступных переменных (вот как Iska писал, например)
Код: Выделить весь код
set program
Есть еще некоторый шанс на то, что в переменной указанной в срипте каким-то боком попал лишний символ или символ внешне похожий на нужный, соответственно пытается подставиться не %ProgramFiles%, а, например, %ProgramFiIes%, которая, естественно, не объявлена.

Отправлено: 13:38, 06-05-2021 | #98


Аватара для Wu-Tang

Ветеран


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

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


Цитата Elven:
echo "ProgramFiles(x86): %ProgramFiles(x86)%" > vars.txt
echo "ProgramFiles: %ProgramFiles%" >> vars.txt »
вывело:
Код: Выделить весь код
"ProgramFiles(x86): " 
"ProgramFiles: C:\Program Files"
Цитата Elven:
set program »
Код: Выделить весь код
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Windows\system32>set program
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files

C:\Windows\system32>

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 15:43, 06-05-2021 | #99


Аватара для Elven

Ветеран


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

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


Добрался до возможности посмотреть что там было по ссылкам нормально. Wu-Tang, вы указываете в посте один код, а запускаете другой. Причем это на момент записи видео, как я понимаю, а теперь там вообще какой-то третий если не пятый может быть.
Если используется код который был на видео - убрать оттуда к лешему set он там не используется, только захламляет код. В двух местах убрать!
Код: Выделить весь код
set xos=x64
и
set xos=x86
к сожалению cmd под рукой так и нету, посему проверить не получится, но кмк reg add в первых скобках не выполнялся никогда, в то время как во вторых (в тех которые после else) наоборот - каждый раз, в не зависимости от разрядности системы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:57, 06-05-2021 | #100



Компьютерный форум 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




 
Переход