If exist bat: windows — How to check if a file exists from inside a batch file

ЕСЛИ СУЩЕСТВУЕТ/ЕСЛИ НЕ СУЩЕСТВУЕТ в пакетном сценарии

спросил

Изменено
7 месяцев назад

Просмотрено
30 тысяч раз

У меня небольшая проблема с пакетным скриптом, который я пишу.

 :Удалить_Файл
клс
заголовок Удалить файл
echo Добро пожаловать в утилиту удаления файла!
echo Введите имя файла, который вы хотите удалить:
эхо.
установить /p переменная =
эхо.
эхо я проверяю наличие файла...
пинг 192.0.2.2 -n 1 -w 2000>ноль
если СУЩЕСТВУЕТ %var% del %var%
if НЕ СУЩЕСТВУЕТ %var% echo Файл не существует. Проверьте на наличие ошибок и попробуйте снова.
пинг 192.0.2.2 -n 1 -w 1500> ноль
установить /p answer=1 - перейти в меню _ 2 - перейти в выход
если %answer%==1 перейти в меню
если %answer%==9 перейти к выходу
 

Итак, проблема в том, что когда файл основан, он удаляется, но затем показывает сообщение в 12-й строке.
Мне нужно показать сообщение «Файл успешно удален! Перенаправляю вас в Меню…»

 echo Файл успешно удален!
echo Перенаправление в меню...
пинг 192.0.2.2 -n 1 -w 2000>ноль
перейти в меню
 

Я искренне извиняюсь за неправильный синтаксис вопроса, но я новичок.

Спасибо за каждый полученный ответ!

Федерико.

  • пакетный файл

1

Если у вас возникли проблемы с else, вы можете использовать несколько ярлыков, например:

, если НЕ СУЩЕСТВУЕТ %var% goto :DeleteFileMissing
дел %var%
Перейти к :DeleteFileContinue
: DeleteFileMissing
эхо Файл не существует. Проверьте на наличие ошибок и попробуйте снова.
: УдалитьФайлПродолжить
 

Пакетный язык действительно не лучший язык для такого рода проектов, но вы должны изменить порядок строк IF EXIST и IF NOT EXIST. Как только вы удалите файл в строке ЕСЛИ СУЩЕСТВУЕТ, файл больше не существует, и проверка ЕСЛИ НЕ СУЩЕСТВУЕТ сразу после этого, таким образом, будет выполнена успешно.

0

 если существует %var% (
  дел %var%
) еще (
  эхо Файл не существует. Проверьте на наличие ошибок и попробуйте снова.
)
 

4

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

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

спросил

Изменено
2 года, 6 месяцев назад

Просмотрено
178 тысяч раз

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

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

 C:\Users\WIN7PR~1>EXIST C:\Users
«СУЩЕСТВУЕТ» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл.
 
  • окна
  • командная строка

0

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

 C:\> IF EXIST C:\CONFIG. SYS ECHO C:\CONFIG.SYS существует.
 

К сожалению, это не работает для каталогов. Функция EXIST возвращает одинаковый результат как для отсутствующих, так и для присутствующих папок. К счастью, есть неясный обходной путь:

 C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER отсутствует.
C:\FOLDER отсутствует.
C:\> MD C:\ПАПКА
C:\> ЕСЛИ СУЩЕСТВУЕТ C:\FOLDER\NUL ECHO C:\FOLDER существует.
C:\ПАПКА существует.
 

Оказывается, для поддержки таких конструкций, как добавление >NUL к операторам команд, в каждом каталоге существует своего рода виртуальный файл с именем «NUL». Проверка его существования эквивалентна проверке существования каталога.

Это поведение задокументировано в статье базы знаний Microsoft ( https://support.microsoft.com/en-us/kb/65994 ), и я подтвердил его поведение в FreeDOS 1.1 и в командной оболочке Windows 7.

ДОПОЛНИТЕЛЬНО: в статье базы знаний указано, что этот метод также можно использовать для проверки наличия диска. Однако в случае проверки существования диска существуют предостережения:

  • An Abort, Retry, Fail? Ошибка возникает, если диск не отформатирован.

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

2

Можно использовать простую

 DIR C:\User
 

0

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

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

Например:

 C:\>введите c:\temp
В доступе отказано.
C:\> введите c:\example.txt
Некоторый пример содержимого в текстовом файле
C:\> введите c:\doesnotexist
Система не может найти указанный файл.
 

1

Просто поставьте , если впереди 🙂

, если есть C:\Users echo Он существует!
 

2

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

 
:в этом
SETLOCAL включил отложенное расширение
ПЕРЕЙТИ к make_dir
:make_dir
ЭХО. 
ECHO Проверка существования каталога %out_path% ...
CD %out_path%
ЕСЛИ !УРОВЕНЬ ОШИБКИ! ОТР 0 (
   Каталог ECHO не существует, создается...
   МД %out_path%
   ПЕРЕЙТИ к make_dir
) ЕЩЕ (
   Каталог ECHO уже существует.
)
:GOTO back_it_up
:back_it_up
::Процедура, которая делает резервную копию
ПЕРЕЙТИ к выполнению
:сделанный
ЭХО Готово
SETLOCAL
ВЫХОД /В

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.