Команда IF в пакетных файлах Windows 98 часто «не срабатывает» не из-за ошибки в логике скрипта, а из-за того, что интерпретатор COMMAND.COM этой системы поддерживает лишь базовый синтаксис MS-DOS: конструкции IF /I, IF DEFINED и сравнения чисел через EQU появились только в Windows NT/2000 и в среде Win9x недоступны. Если BAT-файл, написанный под современную Windows, выдаёт ошибку «Синтаксическая ошибка» или «Bad command or file name» на строке с условием — первым делом проверьте, не использованы ли расширенные ключи, которых в Windows 98 просто нет.
В этой статье разберём, какие формы IF реально работают в MS-DOS 7.x (командная строка Windows 95/98), как правильно строить ветвления с GOTO, как проверять существование файлов и коды возврата программ, а также какие типичные ошибки приводят к неработающим условиям.
Что такое IF в среде Windows 98
В Windows 98 пакетные файлы обрабатывает интерпретатор COMMAND.COM — наследник MS-DOS. Его синтаксис заметно беднее, чем у CMD.EXE из линейки Windows NT. Условный оператор поддерживает ровно три базовые формы:
- 🔹 IF [NOT] ERRORLEVEL число команда — проверка кода возврата предыдущей программы;
- 🔹 IF [NOT] строка1==строка2 команда — сравнение строк с учётом регистра;
- 🔹 IF [NOT] EXIST имя_файла команда — проверка существования файла или каталога.
Каждая форма выполняет одну команду, стоящую после условия. Многострочных блоков в фигурных скобках или скобках, как в CMD.EXE, здесь нет — для сложной логики используется переход по метке через GOTO.
💡В Windows 98 работают только три классические формы IF: ERRORLEVEL, сравнение строк и EXIST. Расширенный синтаксис CMD.EXE (IF /I, IF DEFINED, EQU/NEQ) недоступен.