Dokonuje warunkowego przetwarzania w programach wsadowych.
IF [NOT] ERRORLEVEL liczba polecenie
IF [NOT] ciąg1==ciąg2 polecenie
IF [NOT] EXIST nazwa_pliku polecenie
NOT Określa, że system Windows ma wykonać polecenie tylko
wtedy, gdy warunek nie jest spełniony.
ERRORLEVEL liczba Określa prawdę (spełnienie warunku), jeśli ostatnio
wykonany program zwrócił kod zakończenia równy lub
większy od określonej liczby.
ciąg1==ciąg2 Określa prawdę (spełnienie warunku), jeśli podane ciągi
tekstowe pasują do siebie.
nazwa_pliku Określa prawdę (spełnienie warunku), jeśli plik
o określonej nazwie istnieje.
polecenie Określa polecenie wykonywane, jeśli warunek jest
spełniony. Po poleceniu może nastąpić polecenie ELSE,
które spowoduje wykonanie polecenia po słowie kluczowym
ELSE, jeśli określony warunek zwróci wartość FALSE.
Klauzula ELSE musi wystąpić w tym samym wierszu co polecenie następujące po
elemencie IF. Na przykład:
IF EXIST nazwa_pliku. (
del nazwa_pliku.
) ELSE (
echo Brak pliku nazwa_pliku.
)
Następujące polecenie NIE działałoby, ponieważ polecenie del musi być
zakończone znakiem nowego wiersza:
IF EXIST nazwa_pliku. del nazwa_pliku. ELSE echo Brak pliku nazwa_pliku.
To polecenie również nie będzie działać, ponieważ polecenie po słowie
kluczowym ELSE musi być w tym samym wierszu co koniec polecenia występującego
po słowie kluczowym IF:
IF EXIST nazwa_pliku. del nazwa_pliku.
ELSE echo Brak pliku nazwa_pliku.
Poniższe polecenie będzie działać, nawet gdy wszystkie polecenia zostaną
umieszczone w jednym wierszu:
IF EXIST nazwa_pliku. (del nazwa pliku.) ELSE echo Brak pliku
nazwa_pliku.
Jeżeli włączone są rozszerzenia poleceń, instrukcja IF zmienia się
następująco:
IF [/I] ciąg1 operator_porównania ciąg2 polecenie
IF CMDEXTVERSION liczba polecenie
IF DEFINED zmienna polecenie
gdzie operator_porównania może być jednym z następujących:
EQU - równe
NEQ - nie równe
LSS - mniejsze niż
LEQ - mniejsze niż lub równe
GTR - większe niż
GEQ - większe niż lub równe
a użycie przełącznika /I powoduje wykonanie porównania ciągów bez
uwzględniania wielkości liter. Przełącznik /I może być również użyty przy
porównaniu ciąg1==ciąg2. Są to porównania rodzajowe w tym sensie, że, jeśli
zarówno ciąg1, jak i ciąg2 składają się wyłącznie z cyfr, ciągi są
konwertowane na liczby i wykonywane jest porównanie numeryczne.
Wyrażenie warunkowe CMDEXTVERSION działa podobnie do zmiennej ERRORLEVEL,
z wyjątkiem tego, że jest to porównanie z wewnętrznym numerem wersji
skojarzonym z rozszerzeniami poleceń. Pierwszym numerem wersji jest 1.
Wartość ta będzie zwiększana o 1, jeżeli do rozszerzeń poleceń dodane zostaną
znaczące ulepszenia. Wyrażenie warunkowe CMDEXTVERSION nigdy nie jest
prawdziwe, jeśli rozszerzenia poleceń są wyłączone.
Wyrażenie warunkowe DEFINED działa podobnie do wyrażenia EXIST, z wyjątkiem
tego, że argumentem jest nazwa zmiennej; wyrażenie jest prawdziwe, jeśli
zmienna środowiskowa jest zdefiniowana.
Wyrażenie %ERRORLEVEL% jest rozwijane w reprezentację tekstową bieżącej
wartości zmiennej ERRORLEVEL przy założeniu, że nie ma jeszcze zmiennej
środowiskowej o nazwie ERRORLEVEL, w którym to przypadku pobrana zostanie
jej wartość. Po uruchomieniu programu następujące przykłady ilustrują użycie
zmiennej ERRORLEVEL:
goto odpowiedz%ERRORLEVEL%
:odpowiedz0
echo Program zwrócił kod 0
:odpowiedz1
echo Program zwrócił kod 1
Można także użyć porównań numerycznych:
IF %ERRORLEVEL% LEQ 1 goto okay
Wyrażenie %CMDCMDLINE% jest rozwijane do oryginalnej postaci wiersza
polecenia przekazanego do programu CMD.EXE przed jego przetworzeniem,
przy założeniu, że nie ma jeszcze zmiennej środowiskowej o nazwie CMDCMDLINE,
w którym to przypadku pobrana zostanie jej wartość.
Wyrażenie %CMDEXTVERSION% jest rozwijane w reprezentację tekstową bieżącej
wartości zmiennej CMDEXTVERSION przy założeniu, że nie ma jeszcze zmiennej
środowiskowej o nazwie CMDEXTVERSION, w którym to przypadku pobrana zostanie
jej wartość.
źródło: Pomoc systemowa Microsoft Windows 7 (net if)
IF [NOT] ERRORLEVEL liczba polecenie
IF [NOT] ciąg1==ciąg2 polecenie
IF [NOT] EXIST nazwa_pliku polecenie
NOT Określa, że system Windows ma wykonać polecenie tylko
wtedy, gdy warunek nie jest spełniony.
ERRORLEVEL liczba Określa prawdę (spełnienie warunku), jeśli ostatnio
wykonany program zwrócił kod zakończenia równy lub
większy od określonej liczby.
ciąg1==ciąg2 Określa prawdę (spełnienie warunku), jeśli podane ciągi
tekstowe pasują do siebie.
nazwa_pliku Określa prawdę (spełnienie warunku), jeśli plik
o określonej nazwie istnieje.
polecenie Określa polecenie wykonywane, jeśli warunek jest
spełniony. Po poleceniu może nastąpić polecenie ELSE,
które spowoduje wykonanie polecenia po słowie kluczowym
ELSE, jeśli określony warunek zwróci wartość FALSE.
Klauzula ELSE musi wystąpić w tym samym wierszu co polecenie następujące po
elemencie IF. Na przykład:
IF EXIST nazwa_pliku. (
del nazwa_pliku.
) ELSE (
echo Brak pliku nazwa_pliku.
)
Następujące polecenie NIE działałoby, ponieważ polecenie del musi być
zakończone znakiem nowego wiersza:
IF EXIST nazwa_pliku. del nazwa_pliku. ELSE echo Brak pliku nazwa_pliku.
To polecenie również nie będzie działać, ponieważ polecenie po słowie
kluczowym ELSE musi być w tym samym wierszu co koniec polecenia występującego
po słowie kluczowym IF:
IF EXIST nazwa_pliku. del nazwa_pliku.
ELSE echo Brak pliku nazwa_pliku.
Poniższe polecenie będzie działać, nawet gdy wszystkie polecenia zostaną
umieszczone w jednym wierszu:
IF EXIST nazwa_pliku. (del nazwa pliku.) ELSE echo Brak pliku
nazwa_pliku.
Jeżeli włączone są rozszerzenia poleceń, instrukcja IF zmienia się
następująco:
IF [/I] ciąg1 operator_porównania ciąg2 polecenie
IF CMDEXTVERSION liczba polecenie
IF DEFINED zmienna polecenie
gdzie operator_porównania może być jednym z następujących:
EQU - równe
NEQ - nie równe
LSS - mniejsze niż
LEQ - mniejsze niż lub równe
GTR - większe niż
GEQ - większe niż lub równe
a użycie przełącznika /I powoduje wykonanie porównania ciągów bez
uwzględniania wielkości liter. Przełącznik /I może być również użyty przy
porównaniu ciąg1==ciąg2. Są to porównania rodzajowe w tym sensie, że, jeśli
zarówno ciąg1, jak i ciąg2 składają się wyłącznie z cyfr, ciągi są
konwertowane na liczby i wykonywane jest porównanie numeryczne.
Wyrażenie warunkowe CMDEXTVERSION działa podobnie do zmiennej ERRORLEVEL,
z wyjątkiem tego, że jest to porównanie z wewnętrznym numerem wersji
skojarzonym z rozszerzeniami poleceń. Pierwszym numerem wersji jest 1.
Wartość ta będzie zwiększana o 1, jeżeli do rozszerzeń poleceń dodane zostaną
znaczące ulepszenia. Wyrażenie warunkowe CMDEXTVERSION nigdy nie jest
prawdziwe, jeśli rozszerzenia poleceń są wyłączone.
Wyrażenie warunkowe DEFINED działa podobnie do wyrażenia EXIST, z wyjątkiem
tego, że argumentem jest nazwa zmiennej; wyrażenie jest prawdziwe, jeśli
zmienna środowiskowa jest zdefiniowana.
Wyrażenie %ERRORLEVEL% jest rozwijane w reprezentację tekstową bieżącej
wartości zmiennej ERRORLEVEL przy założeniu, że nie ma jeszcze zmiennej
środowiskowej o nazwie ERRORLEVEL, w którym to przypadku pobrana zostanie
jej wartość. Po uruchomieniu programu następujące przykłady ilustrują użycie
zmiennej ERRORLEVEL:
goto odpowiedz%ERRORLEVEL%
:odpowiedz0
echo Program zwrócił kod 0
:odpowiedz1
echo Program zwrócił kod 1
Można także użyć porównań numerycznych:
IF %ERRORLEVEL% LEQ 1 goto okay
Wyrażenie %CMDCMDLINE% jest rozwijane do oryginalnej postaci wiersza
polecenia przekazanego do programu CMD.EXE przed jego przetworzeniem,
przy założeniu, że nie ma jeszcze zmiennej środowiskowej o nazwie CMDCMDLINE,
w którym to przypadku pobrana zostanie jej wartość.
Wyrażenie %CMDEXTVERSION% jest rozwijane w reprezentację tekstową bieżącej
wartości zmiennej CMDEXTVERSION przy założeniu, że nie ma jeszcze zmiennej
środowiskowej o nazwie CMDEXTVERSION, w którym to przypadku pobrana zostanie
jej wartość.
źródło: Pomoc systemowa Microsoft Windows 7 (net if)