128Kb*8 pamięci powinno wystarczyć każdemu :-) (B. Gates 1981)

piątek, 5 marca 2010

Polecenie if

Share
Wykonuje przetwarzanie warunkowe w programach wsadowych.
Składnia
if [not] errorlevel numer polecenie [else wyrażenie]
if [not] ciąg1==ciąg2 polecenie [else wyrażenie]
if [not] exist nazwa_pliku polecenie [else wyrażenie]
Jeżeli włączono rozszerzenia poleceń, należy używać następującej składni:
if [/i] ciąg1 operator_porównania ciąg2 polecenie [else wyrażenie]
if cmdextversion numer polecenie [else wyrażenie]
if defined zmienna polecenie [else wyrażenie]
Parametry
not
Określa, że polecenie powinno być wykonywane tylko wtedy, gdy warunek nie jest spełniony.
errorlevel numer
Określa, że warunek jest prawdziwy tylko wtedy, gdy poprzedni program uruchomiony przez Cmd.exe zwrócił kod wyjściowy o numerze równym parametrowi numer lub większym od niego.
polecenie
Określa, że polecenie powinno być wykonane tylko wtedy, gdy poprzedzający je warunek jest spełniony.
ciąg1==ciąg2
Określa, że warunek jest prawdziwy tylko wówczas, gdy parametry ciąg1 i ciąg2 są takie same. Te wartości mogą być ciągami tekstowymi lub zmiennymi wsadowymi (np. %1). Ciągi tekstowe nie muszą być wpisywane w cudzysłowie.
exist nazwa_pliku
Określa, że warunek jest prawdziwy, jeśli istnieje plik o nazwie określonej przez parametr nazwa_pliku.
operator_porównania
Określa trzyliterowy operator porównania. Następująca tabela zawiera listę prawidłowych wartości parametru operator_porównania.
Operator
Opis
EQU
równe
NEQ
nie równe
LSS
mniejsze niż
LEQ
mniejsze lub równe
GTR
większe niż
GEQ
większe lub równe
/i
Wymusza ignorowanie wielkości liter podczas porównywania ciągów. Parametru /i można używać w składni ciąg1==ciąg2 polecenia if. Są to porównania ogólne, jeżeli ciągi określone przez parametry ciąg1 i ciąg2 składają się w całości z cyfr, ciągi są konwertowane na liczby i wykonywane jest porównanie numeryczne.
cmdextversion numer
Określa, że warunek jest prawdziwy tylko wtedy, gdy wewnętrzny numer wersji skojarzony z funkcją rozszerzeń poleceń programu Cmd.exe jest równy lub większy niż parametr numer. Pierwsza wersja jest oznaczona numerem 1. Ten numer jest zwiększany o jeden po wprowadzeniu istotnych zmian do rozszerzeń poleceń. Warunek cmdextversion nigdy nie jest prawdziwy, jeżeli rozszerzenia poleceń są wyłączone (rozszerzenia poleceń są domyślnie włączone).
defined zmienna
Określa, że warunek jest prawdziwy, jeśli zdefiniowano parametr zmienna.
wyrażenie
Określa polecenie i parametry wiersza polecenia, które należy przekazać do polecenia w klauzuli else.
/?
Wyświetla Pomoc w wierszu polecenia.
Spostrzeżenia
Jeżeli warunek określony w poleceniu if jest prawdziwy, wykonywane jest następujące po nim polecenie. Jeżeli warunek nie jest spełniony, polecenie w klauzuli if jest ignorowane i wykonywane jest polecenie w klauzuli else, jeżeli zostało określone.
Po zatrzymaniu program zwraca kod wyjściowy. Korzystając z parametru errorlevel, można używać kodów wyjściowych jako warunków.
Korzystanie z parametru defined zmienna
Jeżeli używany jest parametr defined zmienna, dodawane są trzy następujące zmienne: %errorlevel%, %cmdcmdline% i %cmdextversion%.
Zmienna %errorlevel% jest rozwijana do ciągu reprezentującego bieżącą wartość parametru errorlevel pod warunkiem, że jeszcze nie istnieje zmienna środowiskowa o nazwie ERRORLEVEL (w takim przypadku używana jest wartość tej zmiennej). W następującym przykładzie przedstawiono metodę korzystania ze zmiennej errorlevel po uruchomieniu programu wsadowego:
goto etykieta_nr%errorlevel%
:etykieta_nr0
echo Program zwrócił kod 0
:etykieta_nr1
echo Program zwrócił kod 1
goto koniec
:koniec
echo Koniec programu!
Z parametru operator_porównania można również korzystać w następujący sposób:
if %errorlevel% LEQ 1 goto kontynuacja
Zmienna %cmdcmdline% jest rozwijana do oryginalnego wiersza polecenia przekazanego do programu Cmd.exe przed rozpoczęciem przez niego przetwarzania pod warunkiem, że jeszcze nie istnieje zmienna środowiskowa o nazwie cmdcmdline (w takim przypadku używana jest wartość tej zmiennej).
Zmienna %cmdextversion% jest rozwijana do ciągu reprezentującego bieżącą wartość parametru cmdextversion pod warunkiem, że jeszcze nie istnieje zmienna środowiskowa o nazwie CMDEXTVERSION (w takim przypadku używana jest wartość tej zmiennej).
Używanie klauzuli else
Klauzuli else należy używać w tym samym wierszu, co polecenia po słowie kluczowym if. Na przykład:
IF EXIST nazwa_pliku. (
del nazwa_pliku.
) ELSE (
echo brak pliku: nazwa_pliku.
)
Poniższy kod nie jest prawidłowy, ponieważ polecenie del powinno być wpisane w nowym wierszu:
IF EXIST nazwa_pliku. del nazwa_pliku. ELSE echo brak pliku: nazwa_pliku
Następujący kod nie jest prawidłowy, ponieważ klauzulę else należy wpisać w wierszu polecenia if:
IF EXIST nazwa_pliku. del nazwa_pliku.
ELSE echo brak pliku: nazwa_pliku
Jeżeli konieczne jest wpisanie wszystkiego w pojedynczym wierszu, należy użyć następującej formy oryginalnej instrukcji:
IF EXIST nazwa_pliku. (del nazwa_pliku.) ELSE echo brak pliku: nazwa_pliku
Przykłady
Jeżeli nie można znaleźć pliku Produkt.dat, pojawia się następujący komunikat:
if not exist produkt.dat echo Nie można znaleźć pliku danych
Jeżeli błąd wystąpi podczas formatowania dysku w stacji A, następujący program wsadowy wyświetli komunikat o błędzie:
:start
@echo off
format a: /s
if not errorlevel 1 goto koniec
echo Wystąpił błąd podczas formatowania.
:koniec
echo Koniec programu wsadowego.
Jeżeli błąd nie wystąpi, komunikat o błędzie nie pojawi się.
Polecenia if nie można używać do bezpośredniego sprawdzenia istnienia katalogu, ale urządzenie zerowe znajduje się w każdym katalogu. Można więc sprawdzić, czy jest urządzenie zerowe, aby ustalić, czy istnieje katalog. Następujący przykładowy kod sprawdza, czy istnieje katalog.
if exist c:mój_katalog\nul goto kontynuacja

Brak komentarzy:

Prześlij komentarz

 
www.Webmaster.M106.COM