понедельник, 19 августа 2013 г.

Скрипт командной строки CMD с ветвлением по версии выпуска ОС Windows

Ниже приведен пример единого cmd-скрипта, который позволяет выполнять для каждой версии операционной системы Microsoft Windows соответствующий ей набор консольных команд:


@echo off
setlocal
for /f %%v in ('wmic os get version /value^|find "Version"') do set %%v
set version=%Version:~0,3%
if "%version%"=="6.2" (
rem Код для Windows 8 или Windows 2012


rem Конец кода
goto END
)
if "%version%"=="6.1" (
rem Код для Windows 7 или Windows 2008 R2


rem Конец кода
goto END
)
if "%version%"=="6.0" (
rem Код для Windows Vista или Windows 2008


rem Конец кода
goto END
)
if "%version%"=="5.2" (
rem Код для Windows 2003


rem Конец кода
goto END
)
if "%version%"=="5.1" (
rem Код для Windows XP


rem Конец кода
goto END
)
if "%version%"=="5.0" (
rem Код для Windows 2000


rem Конец кода
goto END
)
:END


Определение ОС осуществляется благодаря запросу WMI. В связи с этим для старых систем понадобится дополнительно установить  данные службы и проверить работоспособность утилиты "wmic".

Второй вариант скрипта не нуждается в WMI, а для определения версии использует утилиту командной строки "ver":


@echo off
ver|find "5.0.">NUL
if NOT errorlevel == 1 (
rem Код для Windows 2000


rem Конец кода
goto END
)
ver|find "5.1.">NUL
if NOT errorlevel == 1 (
rem Код для Windows XP


rem Конец кода
goto END
)
ver|find "5.2.">NUL
if NOT errorlevel == 1 (
rem Код для Windows 2003


rem Конец кода
goto END
)
ver|find "6.0.">NUL
if NOT errorlevel == 1 (
rem Код для Windows Vista или Windows 2008


rem Конец кода
goto END
)
ver|find "6.1.">NUL
if NOT errorlevel == 1 (
rem Код для Windows 7 или Windows 2008 R2


rem Конец кода
goto END
)
ver|find "6.2.">NUL
if NOT errorlevel == 1 (
rem Код для Windows 8 или Windows 2012


rem Конец кода
goto END
)
:END


1 комментарий:

  1. на дисках к продуктам Asus есть файл asus_setup.exe (+ini)
    Экзешник 500 кб а умеет многое.
    Внимательно смотрите и всё поймёте.

    ОтветитьУдалить