Проверьте, существует ли файл/папка, с помощью командной строки cmd (НЕ пакетного скрипта)

Проверьте, существует ли файл/папка, с помощью командной строки cmd (НЕ пакетного скрипта)

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

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

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

решение1

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

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

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

решение2

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

DIR C:\User

решение3

Вы можете использовать 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.

решение4

Вы можете использовать этот код:

<pre>
:init
SETLOCAL enabledelayedexpansion
GOTO make_dir

:make_dir
ECHO .
ECHO Checking if exists directory %out_path% ...
CD %out_path%
IF !ERRORLEVEL! GTR 0 (
   ECHO Directory doesn't exist, creating...
   MD %out_path%
   GOTO make_dir
) ELSE (
   ECHO Directory already exists.
)
:GOTO back_it_up

:back_it_up
::Procedure that makes an backup
GOTO done

:done
ECHO Finished
SETLOCAL
EXIT /B
</pre>

Связанный контент