Решение, когда ресурс представляет собой файл, является довольно простым, как указано другими:
C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.
К сожалению, вышесказанное не работает для каталогов. Функция EXIST возвращает одинаковый результат как для отсутствующих, так и для существующих папок. К счастью, есть неясный обходной путь:
C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.
Оказывается, что для поддержки таких конструкций, как добавление >NUL
в операторах команд, в каждом каталоге есть своего рода виртуальный файл с именем "NUL". Проверка его существования эквивалентна проверке существования каталога.
Это поведение описано в статье базы знаний Microsoft ( https://support.microsoft.com/en-us/kb/65994 ), и я подтвердил его поведение в FreeDOS 1.1 и в командной оболочке Windows 7.
ДОПОЛНИТЕЛЬНО: В статье базы знаний говорится, что этот метод также можно использовать для проверки наличия диска. Однако в случае проверки существования диска существуют следующие предостережения:
Abort, Retry, Fail?
ошибка возникает, если диск не отформатирован.
Использование этого метода для проверки существования диска зависит от реализации драйвера устройства и может не всегда работать.