- Сообщения
 - 13,982
 
- Решения
 - 3
 
- Реакции
 - 5,704
 
Решил испробовать функцию 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
	
			
				Последнее редактирование модератором: