CMD сравнивает переменную с элементом списка - PullRequest
0 голосов
/ 03 апреля 2012

Мне нужна помощь со сценариями CMD. Вот моя проблема:

У меня есть список элементов, также есть переменная, которая показывает, например, текущую версию SDK.

set CURRENT_VERSION = 2.3
set LIST_OF_ITEMS   = (4.0.3 2.3.3 2.2)

Я хочу написать что-то вроде этого

for %%A in %CURRENT_VERSION % do (
    if [%%A] grt [%SDK_VERSION%] (
        echo greater. 
    )
)

Также я хочу узнать, что я должен написать break или continue в течение

1 Ответ

1 голос
/ 04 апреля 2012

Этот код почти такой же, как вы написали, но он работает.

set CURRENT_VERSION=2.3
set LIST_OF_ITEMS=4.0.3 2.3.3 2.2

for %%A in (%LIST_OF_ITEMS%) do (
    if [%%A] gtr [%CURRENT_VERSION%] (
        echo greater.
        goto continue
    )
)
:continue

Однако я думаю, что сравнение выполняется в обратном порядке, поэтому оно должно быть:

set CURRENT_VERSION=2.3
set LIST_OF_ITEMS=4.0.3 2.3.3 2.2

for %%A in (%LIST_OF_ITEMS%) do (
    if [%CURRENT_VERSION%] gtr [%%A] (
        echo Current version greater %%A.
        goto continue
    )
)
echo Current version too low
goto :EOF

:continue

Обратите внимание, что номера версий сравниваются как строки . Если вы хотите получить правильные результаты с этими числами, то они оба должны иметь одинаковый формат; то есть:

set CURRENT_VERSION=2.3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...