- Сообщения
- 13,982
- Решения
- 2
- Реакции
- 5,693
Решил испробовать функцию getsystem из закрепленной темы,для создания универсального сценария по восстановлению служб.
Я раньше использовал примерно такой ход для определения ОС
Но с вышеупомянутой функцией немного сложнее.
Прошу помочь разобрать на примере такого кода
Я раньше использовал примерно такой ход для определения ОС
CMD/BATCH:
SET Version=Unknown
VER | FINDSTR /IL "5.0" > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 2000"
VER | FINDSTR /IL "5.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows XP"
VER | FINDSTR /IL "5.2." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 2003"
VER | FINDSTR /IL "6.0." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows Vista"
VER | FINDSTR /IL "6.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 7"
VER | FINDSTR /IL "6.2." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 8"
echo.
echo.
IF %VERSION% == "Windows XP" GOTO XP
IF %VERSION% == "Windows 2000" GOTO XP
IF %VERSION% == "Windows 2003" GOTO XP
IF %VERSION% == "Windows Vista" GOTO Elevate
IF %VERSION% == "Windows 7" GOTO Elevate
IF %VERSION% == "Windows 8" GOTO Elevate
GOTO Unknown
Но с вышеупомянутой функцией немного сложнее.
Прошу помочь разобрать на примере такого кода
CMD/BATCH:
@echo off
Chcp 866 >nul
title Восстановление запуска служб
SetLocal EnableExtensions
call :GetSystemVersion "OSVer" "Core" "Build" "Family" "EnvironCore"
echo Версия ОС: %OSVer%
echo Рязрядность ОС: %Core%
echo Сборка: %Build%
echo Семейство: %Family%
echo Разрядность среды запуска Batch: %EnvironCore%
echo.
echo.
echo (Введите с клавиатуры букву Y если версия и разрядность ОС определены верно
echo или N что бы произвести выбор вручную и нажмите клавишу ENTER)
echo.
set ch=
set /p ch=Данные определены верно? (Y/N)
if /i "!ch!"=="Y" (тут идет вызов основного блока восстановления
) else ( тут вызов вбс скрипта с выбором вручную)
::было бы неплохо добавить защиту от дурака
pause
Exit /B
:GetSystemVersion [OSVersion] [OSCore] [OSBuild] [OSFamily] [EnvironmentCore]
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x32
set %~5=x32& if "%xOS%"=="x64" echo "%PROGRAMFILES%" |>nul find "x86" || set %~5=x64
set "%~2=%xOS%"
set _key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentBuildNumber"^|Find "CurrentBuildNumber"') do set "%~3=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentVersion"^|Find "CurrentVersion"') do set "_ver=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "ProductName"^|Find "ProductName"') do set "%~1=%%~b"
if "%_ver:~0,1%"=="6" (set "%~4=Vista") else (set "%~4=NT")
Exit /B
::Блок сценариев для для скрипта восстановления запуска служб
:: поблоковое определение нужного твика
:: тут надо бы определять блоки исходя из переменных
:Exite
cls
Echo ====== Работа скрипта завершена ======
Echo.
Echo.
Echo Скрипт подгтовлен Koza Nozdri & Drakogas
Echo Сайт: SafeZone.cc
Echo E-mail: Fire@safezone.cc
Echo.
Echo======================================================================
Echo Бесплатное лечение компьютерных вирусов и решение проблем в работе ПК
ping -n 15 127.0.0.1 > NUL
Exit
Последнее редактирование модератором: