Эта статья рассказывает, как в bat файле проверить, существует ли определенный файл или определенная папка (директория),

Как проверить, существует ли файлусловием if exist или командой dir

Проверить наличие директорииусловием if exist или командой dir

Заключение

Как проверить, существует ли файл

Проверка наличия файла командой if exist

Командный интерпретатор cmd поддерживает условную обработку в такой форме:

if [not] exist <filename> <command> [else <expression>]

Например, чтобы показать сообщение об ошибке, если не найден необходимый для работы файл

if not exist product.dat echo Не удается найти файл данных

Условие поддерживает маски в именах файлов, например:

if exist *.tmp goto cleanup 

Команда if [not] exist – наиболее часто используемый вариант, самый короткий для записи.

Проверка наличия файла командой dir

Это альтернативный способ проверки существования файла, основанный на том, что команда dir имяфайла возвращает 0, если файл существует, и 1, если файл не существует:

dir products.dat > nul
if errorlevel 1 ( echo не существует ) else ( echo существует )

С операторами && и || можно составить более удобную команду:

dir products.dat > nul && echo существует

или

dir products.dat > nul || echo не существует

в зависимости от того, какую ситуацию требуется обнаружить – когда файл найден или когда не найден.

Как проверить, существует ли папка

Проверка наличия папки командой if exist

Та же команда if exist используется и для проверки наличия папки, но с одним отличием: после имени папки следует поставить обратную наклонную черту \, чтобы команда проверяла именно папку:

if exist products\ ( echo папка существует ) else ( echo папка не существует )

Если не ставить символ обратной наклонной черты, то команда будет давать положительный результат и в случае, когда существует файл с таким именем. На самом деле, это не такая большая проблема, потому что обычно файлы имеют расширения (csv, dat, pdf, xlsx и так далее), а папки используется без расширений, и поэтому совпадение имён между файлами и папками – большая редкость. Но всё равно лучше сразу прописывать правильно, тем более что разница в одном символе.

Проверка наличия папки командой dir

Вариант, основанный на команде dir, применим и для папок, также с обратной наклонной чертой \:

dir папка\
if errorlevel 1 ( echo не существует ) else ( echo существует )

или с операторами && и ||

dir папка\ >nul 2>&1 && echo папка существует
dir папка\ >nul 2>&1 || echo папка не существует

Проверка наличия сетевой папки WebDav

Хотя сетевая папка при подключении по протоколу WebDav выглядит как обычная папка, в её работе есть некоторые отличия. Например, если сетевой диск подключен к букве N:, то команда if exist N:\ может давать положительный ответ TRUE при неактивном подключении. А вот запись со звёздочкой:

if exist N:\*

будет давать TRUE именно при активном подключении.

Если имя файла содержит пробелы

Имена с пробелами необходимо указывать в кавычках:

if not exist "all products.dat" echo Не удается найти файл данных

В противном случае, интерпретатор выдаст ошибку:

"products.dat" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Заключение

В итоге, для проверки того, что файл или папка существует, можно использовать команду-условие if exist или команду dir.

Рекомендуется указывать имена папок с обратной наклонной чертой (backslash) \, чтобы не путать с именем файла.

Если имя файла или папки содержит пробелы, его надо заключать в кавычки.

Если имя файла или папки содержит символы Unicode, которые отсутствуют в 8-битной таблице ASCII (OEM), их невозможно прописать в bat файле. Это ограничение самих bat файлов. Обходной путь – использование коротких имен 8.3, но лучше использовать WSH/JScript/VBScript или PowerShell.

Как в bat проверить, что файл существует
Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *