Проверка наличия папки с использованием файла .bat [закрыто]

160

Я хотел бы иметь возможность проверить, существует ли определенная папка (FolderA) и, если да, для отображения сообщения, а затем для выхода из пакетного файла.

Если FolderA не существует, я бы хотел проверить, существует ли другая папка (FolderB). Если FolderB не существует, должно отображаться сообщение и должна создаваться папка, а если FolderB существует, должно отображаться сообщение о том, что это так.

Кто-нибудь имеет представление о коде, который я мог бы просто использовать в блокноте, чтобы создать пакетный файл, чтобы позволить мне сделать это?

Все это нужно сделать одним .batфайлом.

user3179825
источник
7
Поиск в Google позволяет проверить, существует ли диск или каталог . И это объясняет, как именно делать то, что вы просите ...
NealB
2
Поиском «Каталог файловых файлов существует» здесь, в SO найдено Пакетный файл Windows. Найдите каталог, если он не существует, создайте, а затем переместите файл , который показывает, как проверить, существует каталог или нет. Здесь также есть сообщения о создании каталога из командного файла. Пожалуйста, сделайте некоторые фундаментальные исследования, прежде чем отправлять новые вопросы; Скорее всего, вопрос был задан здесь ранее. Спасибо.
Кен Уайт
3
Пакет Windows - это язык программирования, проверка наличия файла - это задача программирования. Появляется по теме.
Аудрюс Мескаускас
1
Должен быть закрыт как дубликат Как проверить, является ли файл каталогом в пакетном скрипте? вместо «не по теме»
Майкл

Ответы:

260

Попробуйте использовать это:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

Замените yourfilename на имя вашего файла.

Справочник можно посмотреть на этом https://jeffpar.github.io/kbarchive/kb/065/Q65994/

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

завершающей обратной косой черты ('\'), по-видимому, достаточно, чтобы различать каталоги и обычные файлы.

09stephenb
источник
2
Вторая часть вашего ответа является неполной.
tmj
4
if exist "c:\folder\nul" echo okу меня не работало под Windows 7. То, что сработало, было if exist "c:\folder\" echo ok.
Александр Гельбух
2
@AlexanderGelbukh - Вы правы, if exist "networkPath\nul"можете ложно сообщить о файле как папке на сетевых дисках Windows. К сожалению, if exist "networkPath\"страдает та же проблема. См. Обновление 2015-12-08 на stackoverflow.com/a/8669636/1012053, чтобы узнать о технике, которая была надежной во всех моих тестах.
ДБЕНХАМ
@AlexanderGelbukh Работает без кавычек. Конечно, это ограничивает вас, когда речь идет о наличии пробелов в пути к каталогу.
23 марта
1
Да, без кавычек это работает. Однако с кавычками это не работает даже для локальных дисков: if exist c:\Windows\nul echo okговорит ok, но if exist "c:\Windows\nul" echo okничего не говорит. Как я уже сказал, пока if exist "c:\Program Files\nul" echo okничего не говорит, if exist "c:\Program Files\" echo okговорит okи таким образом работает даже для пути с пробелами.
Александр Гельбух
34

Я думаю, что ответ здесь (возможно, дубликат):

Как проверить, является ли файл каталогом в пакетном скрипте?

IF EXIST %VAR%\NUL ECHO It's a directory

Замените% VAR% вашим каталогом. Пожалуйста, прочитайте оригинальный ответ, потому что включает в себя подробности об обработке пробелов в имени папки.

Как сказал foxidrive, это может быть ненадежно для окон класса NT. Это работает для меня, но я знаю, что у него есть некоторые ограничения (которые вы можете найти в указанном вопросе)

if exist "c:\folder\" echo folder exists 

должно быть достаточно для современных окон.

Космин Ванэ
источник
6
Техника \ nul не надежна в окнах класса NT. Это было хорошо в MSDOS и Win9x, однако. Решение в современных Windows просто if exist "c\:folder\" echo folder exists
foxidrive
1
Я думаю, что это также указано в ссылочной ссылке.
Космин Ванэ
До сих пор не понимаю, почему меня понизили (что означает «Не полезно»). Я добавил ссылку на вопрос, где ответы охватывают необходимый сценарий.
Космин Ванэ
Может быть бесполезно, потому что это не применимо к текущим машинам, и ваш предыдущий ответ не делал различий. Некоторые люди все равно будут опускать ваш ответ, потому что он не отвечает на поставленный вопрос.
foxidrive
2
от support.microsoft.com/kb/65994 «NUL всегда существует на локальном диске MS-DOS FAT» - как вE:\NUL
CAD CAD