6

Я на консоли Windows, чтобы выяснить, существует ли файл / папка или нет.

EXIST может использоваться в пакетном режиме, но он недоступен в командной строке:

C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.

4 ответа4

7

Решение, когда ресурс представляет собой файл, является довольно простым, как указано другими:

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? ошибка возникает, если диск не отформатирован.

  • Использование этого метода для проверки существования диска зависит от реализации драйвера устройства и может не всегда работать.

6

Вы можете использовать простой

DIR C:\User
4

Просто поставьте if на передний план :)

if exist C:\Users echo It exists!
4

Вы можете использовать команду type , она вернет содержимое текстового файла, не открывая его, а для директории вернет: Доступ запрещен.

Если файл или каталог недоступен, вы получите сообщение: Система не может найти указанный файл.

Так, например:

C:\>type c:\temp
Access is denied.

C:\>type c:\example.txt
Some example content in a text file

C:\>type c:\doesnotexist
The system cannot find the file specified.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .