Скрипт для проверки версии Windows, а затем выполнить действие только для версии 10.0 (2016 или более поздней версии) - PullRequest
0 голосов
/ 13 июня 2019

Я разрабатываю сценарий с целью выполнить действие только в Windows версии 10.0 или выше.

Я попытался запустить свой код, но оба действия выполнены, в Win 2016 пакет долженобычно выполняется только программа, относящаяся к goto, в if / else

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j

echo %version%
pause
if "%version%" geq "10.0" ( goto :AddWinDefenderExclusion )
else ( goto :NoWinDefenderExclusion )

:AddWinDefenderExclusion
echo Windows Defender Exclusion will be added


:NoWinDefenderExclusion
echo No Windows Defender Exclusion to add (Not a Windows 2016 or greater)

endlocal

Можете ли вы помочь мне добиться контроля версий, а затем выполнить правильное действие?

Ответы [ 3 ]

0 голосов
/ 13 июня 2019

Возможно, вы могли бы сделать это проще всего, используя :

@Echo Off
WMIC OS Where "Version Like '__.%%'" Get Status 2> NUL | Find "Status" > NUL && (
    Echo Windows Defender Exclusion will be added
) || Echo No Windows Defender Exclusion to add [Not Windows 2016 or greater]
Pause

Если ваш сценарий просто не для какой-либо версии Windows до Windows 10, то это, вероятно, будет работать лучше:

@Echo Off
WMIC OS Where "Version Like '__.%%'" Get Status 2> NUL | Find "Status" > NUL || Exit /B
Echo Windows Defender Exclusion will be added & Pause

Последняя строка, очевидно, содержит ваш собственный код.

0 голосов
/ 13 июня 2019

Спасибо за ответ.

Вот мой окончательный код:

@echo off
setlocal

for /f "tokens=4-5 delims=. " %%i in ('ver') do (
    set VERSION=%%i
)

if %version% GEQ 10 (
    goto :ADDEXCLUSION
) else (
    goto :NOEXCLUSION
)

:ADDEXCLUSION
echo ADDEXCLUSION
pause
goto :eof

:NOEXCLUSION
echo NOEXCLUSION
pause
goto :eof

Я думаю, что GEQ можно использовать только с числами, без кавычек сравнивает числа и с кавычками как по переменной %version%, так и по значению сравнивает строку. В моем случае мой скрипт проверяет номер версии, (первые 2 цифры) .

Спасибо за все.

0 голосов
/ 13 июня 2019

Вы должны добавить goto :eof ( [SS64]: GOTO ) в конце : AddWinDefenderExclusion и : NoWinDefenderExclusion . Технически, вам не нужно делать это для последнего (так как в любом случае оно достигнет eof ), однако вы должны сделать это:

  • Для согласованности
  • Вы не столкнетесь с проблемами, если добавите другие инструкции после него

script.bat

@echo off

setlocal

for /f "tokens=4-5 delims=. " %%i in ('ver') do (
    set VERSION_MAJ=%%i
    set VERSION_MIN=%%j
)

set MAJ_REQ=10
set MIN_REQ=0

echo %VERSION_MAJ%.%VERSION_MIN%

if %VERSION_MAJ% gtr %MAJ_REQ% (
        goto :AddWinDefenderExclusion
) else if %VERSION_MAJ% equ %MAJ_REQ% (
    if %VERSION_MIN% geq %MIN_REQ% (
        goto :AddWinDefenderExclusion
    )
)
goto :NoWinDefenderExclusion

goto :eof

:AddWinDefenderExclusion
    echo Windows Defender Exclusion will be added
    pause
    goto :eof

:NoWinDefenderExclusion
    echo No Windows Defender Exclusion to add (Not a Windows 2016 or greater)$
    pause
    goto :eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...