5. říjen 2020 Autor: Tibor
Provede podmíněný příkaz v dávce. IF [NOT] ERRORLEVEL číslo příkaz IF [NOT] řetězec1==řetězec2 příkaz IF [NOT] EXIST soubor příkaz NOT Systém Windows provede příkaz jen tehdy, když nebude podmínka pravdivá. ERRORLEVEL číslo Určuje pravdivou podmínku, pokud poslední program vrátil hodnotu rovnou nebo větší než zadané číslo. řetězec1==řetězec2 Určuje pravdivou podmínku, pokud jsou zadané textové řetězce shodné. EXIST soubor Určuje pravdivou podmínku, pokud soubor se zadaným názvem existuje. příkaz Určuje příkaz, který bude proveden, bude-li podmínka pravdivá. Za příkazem lze uvést klíčové slovo ELSE a příkaz, který bude proveden v případě, že podmínka nebude splněna. Klauzule ELSE musí být uvedena na stejném řádku jako příkaz uvedený za klauzulí IF, například: IF EXIST soubor. ( del soubor. ) ELSE ( echo soubor. nebyl nalezen ) Následující příklad je chybný, protože příkaz del musí být ukončen znakem nového řádku: IF EXIST soubor. del soubor. ELSE echo soubor. nebyl nalezen I následující příklad je chybný, protože výraz ELSE příkaz musí být na stejném řádku jako konec příkazu uvedeného za klíčovým slovem IF: IF EXIST soubor. del soubor. ELSE echo soubor. nebyl nalezen Správný příklad použití na jednom řádku: IF EXIST soubor. (del soubor.) ELSE echo soubor. nebyl nalezen Jsou-li povolena rozšíření příkazů, příkaz IF se změní takto: IF [/I] řetězec1 operátor_porovnání řetězec2 příkaz IF CMDEXTVERSION číslo příkaz IF DEFINED proměnná příkaz operátor_porovnání může být jeden z těchto operátorů: EQU - rovná se NEQ - nerovná se LSS - menší než LEQ - menší nebo rovno GTR - větší než GEQ - větší nebo rovno. Je-li uveden přepínač /I, nebudou při porovnávání řetězců rozlišována malá a velká písmena. Přepínač /I je také možné použít ve tvaru řetězec1==řetězec2 příkazu IF. Tato porovnání jsou generická v tom smyslu, že jsou-li oba řetězce (řetězec1 a řetězec2) tvořeny pouze číslicemi, budou řetězce nejdříve převedeny na čísla a porovnány číselně. Podmínka CMDEXTVERSION funguje podobně jako ERRORLEVEL, porovnání se však vztahuje k vnitřnímu číslu verze týkajícímu se rozšíření příkazů. První verze je 1. Jakmile budou k rozšířením příkazů přidána významná vylepšení, zvýší se hodnota vždy o jedničku. Jsou-li rozšíření příkazů zakázána, není podmínka CMDEXTVERSION nikdy pravdivá. Podmínka DEFINED funguje podobně jako podmínka EXIST, avšak přijímá název proměnné prostředí a vrací hodnotu pravda, je-li proměnná prostředí definována. Výraz %ERRORLEVEL% se rozvine do řetězcové reprezentace aktuální hodnoty ERRORLEVEL, pokud ovšem již neexistuje systémová proměnná nazvaná ERRORLEVEL - v takovém případě získáte hodnotu této proměnné. Následující příklad ukazuje, jak použít podmínku ERRORLEVEL po skončení určitého programu: goto zprava%ERRORLEVEL% :zprava0 echo Program vrátil návratový kód 0 :zprava1 echo Program vrátil návratový kód 1 Můžete použít také operátory pro porovnání čísel, uvedené dříve: If %ERRORLEVEL% LEQ 1 goto OK Výraz %CMDCMDLINE% se rozvine do příkazového řádku původně předaného programu CMD.EXE, před jakýmkoli zpracováním programem CMD.EXE - pokud ovšem již neexistuje systémová proměnná nazvaná CMDCMDLINE. V takovém případě získáte hodnotu této proměnné. Výraz %CMDEXTVERSION% se rozvine do řetězcové reprezentace aktuální hodnoty podmínky CMDEXTVERSION, pokud ovšem již neexistuje systémová proměnná nazvaná CMDEXTVERSION - v takovém případě získáte hodnotu této proměnné.