![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - определить версию и разрядность windows и запустить команды |
|
CMD/BAT - определить версию и разрядность windows и запустить команды
|
Новый участник Сообщения: 7 |
Необходимо определить сначала версию Windows (XP, Vista, 7, 8), затем определить разрядность (x86(32) или x64), затем в этом же bat файле в соответствии с версией и разрядностью выполнить набор команд по добавлению сведений в реестр.
Команды по добавлению в реестр выглядят так: win7-x32 [HKEY_LOCAL_MACHINE\SOFTWARE\1111\2222] "DataFolder"="значение" "SetupLog"="значение" "Version"="значение" "SetupVersion"=значение "ProgramFolder"="значение" "SetupFolder"="значение" "RegData"=hex:значение "Registration"=hex:значение "Patches"=hex(7):значение win7-x64 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\1111\2222] "DataFolder"="значение" "SetupLog"="значение" "Version"="значение" "SetupVersion"=значение "ProgramFolder"="значение" "SetupFolder"="значение" "RegData"=hex:значение2 "Registration"=hex:значение2 "Patches"=hex(7):значение2 Можно ли полностью автоматизировать добавление данных в реестр с помощью одного bat файла? Если напишите, буду очень благодарен. P.S. Изучал тут на форуме как определить версию Windows и разрядность, но не пойму как передать значения. Помогите пожалуйста. |
|
Отправлено: 12:02, 16-02-2014 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Собрал пока что такой батник
@Echo Off Set Tip=UNKNOWN Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "Windows 7" >nul If "%ERRORLEVEL%"=="0" Set Tip=Win7 Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "Windows 8" >nul If "%ERRORLEVEL%"=="0" Set Tip=Win8 Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86 Echo %%xOS%% - %xOS% Echo %%Tip%% - %Tip% If %Tip%==UNKNOWN Exit start REGEDIT %~dp0%Tip%-%xOS%.reg Pause |
Отправлено: 14:57, 16-02-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Выкладываю другой вариант. Разрабатывал только на основе Windows 7 X86, поэтому на других системах могут быть сбои. Но сам принцип непорочен. Особо отмечу, что учёл Ваше пожелание:
Цитата Karbid87:
@echo off for /f "tokens=*" %%i in ('systeminfo 2^>nul') do ( echo %%i|>nul findstr Windows&& set OS=%%i )||( echo %%i|>nul findstr /rc:"X[68][46]\-based PC"&& set Arch=%%i&& goto:# ) :# for %%i in ( XP Vista 7 8 ) do ( set OS|>nul findstr /c:"Windows %%i"&& set OS=Windows %%i ) ==if defined OS ( echo %OS% ) else ( exit /b ) set Arch|>nul findstr 64&& set Arch=X64 set Arch|>nul findstr 86&& set Arch=X86 echo %Arch% chcp 1251>nul ( echo Windows Registry Editor Version 5.00 echo. ==if %Arch%==X64 ( echo [HKLM\SOFTWARE\Wow6432Node\1111\2222] ) else ( echo [HKLM\SOFTWARE\1111\2222] ) for %%i in ( ""DataFolder"="значение"" ""SetupLog"="значение"" ""Version"="значение"" ""SetupVersion"="значение"" ""ProgramFolder"="значение"" ""SetupFolder"="значение"" ) do ( echo %%~i ) for /f "tokens=1* delims=*" %%i in (' findstr /bc:^"%OS% %Arch%^" ^"%~f0^" ') do ( echo %%j ) )>tmp.reg echo reg import tmp.reg echo del tmp.reg pause>nul exit /b ############################################### Windows XP X64 *"RegData"=hex:значение 1 Windows XP X64 *"Registration"=hex:значение 1 Windows XP X64 *"Patches"=hex(7):значение 1 Windows XP X86 *"RegData"=hex:значение 2 Windows XP X86 *"Registration"=hex:значение 2 Windows XP X86 *"Patches"=hex(7):значение 2 Windows Vista X64 *"RegData"=hex:значение 3 Windows Vista X64 *"Registration"=hex:значение 3 Windows Vista X64 *"Patches"=hex(7):значение 3 Windows Vista X86 *"RegData"=hex:значение 4 Windows Vista X86 *"Registration"=hex:значение 4 Windows Vista X86 *"Patches"=hex(7):значение 4 Windows 7 X64 *"RegData"=hex:значение 5 Windows 7 X64 *"Registration"=hex:значение 5 Windows 7 X64 *"Patches"=hex(7):значение 5 Windows 7 X86 *"RegData"=hex:значение 6 Windows 7 X86 *"Registration"=hex:значение 6 Windows 7 X86 *"Patches"=hex(7):значение 6 Windows 8 X64 *"RegData"=hex:значение 7 Windows 8 X64 *"Registration"=hex:значение 7 Windows 8 X64 *"Patches"=hex(7):значение 7 Windows 8 X86 *"RegData"=hex:значение 8 Windows 8 X86 *"Registration"=hex:значение 8 Windows 8 X86 *"Patches"=hex(7):значение 8 Если значения в "hex" и "hex(7)" будут расположены в несколько строк, то префикс надо добавлять к каждой строке, учитывая пробелы в её начале, например: Windows 7 X86 *"RegData"=hex:a4,00,00,00,03,00,00,00,30,30,33,34,32,2d,4f,45,4d,2d,\ Windows 7 X86 * 38,39,39,32,37,35,32,2d,33,30,30,31,33,00,b2,00,00,00,58,31,35,2d,33,39,32,\ Windows 7 X86 * 37,35,00,00,00,00,00,00,00,35,b6,40,90,2e,72,ef,2f,c9,b3,68,d1,11,76,02,00,\ Windows 7 X86 * 00,00,00,00,58,60,5a,4d,96,66,d6,51,02,00,00,00,00,00,00,00,00,00,00,00,00,\ Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,68,23,f2,11 Для "боевого применения" уберите "echo " из команд: |
|
Последний раз редактировалось Georgio, 17-02-2014 в 13:11. Отправлено: 13:00, 17-02-2014 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как определить версию Windows из вне? | warezhka84 | Программное обеспечение Windows | 8 | 14-11-2015 12:32 | |
Разное - Как определить версию установленной Windows | Dramadeur | Microsoft Windows 8 и 8.1 | 9 | 21-09-2013 17:16 | |
Использование - [решено] Не могу определить версию Windows по CID | neky | Лицензирование продуктов Microsoft | 1 | 11-04-2012 11:15 | |
Разное - [решено] Как определить последнюю версию Windows Live? | Funtik123 | Windows Live (архив) | 4 | 23-05-2010 02:27 | |
Разное - [решено] Как определить разрядность процессора? | Lexolex | Microsoft Windows 7 | 4 | 26-01-2010 18:55 |
|