Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 12.03.2018
Сообщений: 62

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

15.09.2019, 09:16. Показов 5208. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, не найдя подходящего в интернете подходящего скрипта решил узнать тут.Суть такова нужен скрипт проверяющий наличие указаного файла в указаной папке
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2019, 09:16
Ответы с готовыми решениями:

Проверка наличия файла
Проверка наличия на диске в каталоге, указанном первым параметром КФ, файла FNames.txt, содержащего список имен файлов и подкаталогов. Если...

Проверка наличия файла на диске
Всем привет Ребят , у меня батник , который ищет указанный файл на диске, и выводит результат на экран Но по условию , нужно сделать...

Проверка наличия файла с переодичностью
Доброго времени суток форумчане, вроде все очевидно, но не работает следующий код @echo off For /L %i In (1, 1, 20) Do ( If not...

2
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
15.09.2019, 11:57
Лучший ответ Сообщение было отмечено genstiller как решение

Решение

Цитата Сообщение от genstiller
...не найдя подходящего в интернете подходящего скрипта...
Это - ложь уже хотя бы потому, что сама проверка не требует отдельного сценария, а представляет собой один из вариантов выражения if:
Windows Batch file
1
2
3
4
if not exist "X:\path\file.ext" (
  echo:It seems that file you are looking for does not exist.
  goto:eof
)
Если проверка подразумевает последующее действие (найден - выполнить директиву 1, не найден - 2), можно использовать операторы && и || в купе с dir:
Windows Batch file
1
(dir X:\path\file.ext | findstr /irc:"file.ext")&&goto:label1||goto:label2
И так далее.
1
 Аватар для bidstrup
419 / 179 / 27
Регистрация: 11.03.2018
Сообщений: 771
18.09.2019, 23:59
Можно и попроще. С помощью забавной утилиты WHERE (Забавной из-за неожиданного синтаксиса,
которым вдруг разродился Майкрософт )

Итак:
  • чтобы поискать файл file.ext в конкретной директории, например, C:\TEMP:
@WHERE C:\TEMP:file.ext
  • чтобы поискать файл file.ext в нескольких директориях, например, C:\TEMP, C:\USERS :
@WHERE C:\TEMP;C:\USERS:file.ext
  • чтобы поискать несколько файлов (file1.ext и file2.ext) в нескольких разных директориях, например, C:\TEMP, C:\USERS и C:\WINDOWS :
@WHERE C:\TEMP;C:\USERS:file1.ext C:\TEMP;C:\USERS;C:\WINDOWS:file2.ext

То есть, директории в спецификации разделяются с помощью ;, а собственно файл отделяется от спецификации с помощью :. И таких пар может быть много.
  • Если же надо поискать файл, начиная от какой-то директории и далее вниз по дереву ( рекурсивно ), то синтаксис уже другой;
  • у WHERE появляется ключ /R, затем начальная директория, затем пробел и затем через пробел файл(ы), которые надо искать:
WHERE /R C:\USERS file1.ext file2.ext

Веселье на этом не заканчивается. Вам ничего не напомнила ; в качестве разделителя в спецификации директорий?
Правильно, точка с запятой является синтаксическим разделителем и в системной пeременной PATH.

Если вы не укажете спецификацию директорий при поиске файла(ов):
WHERE file.ext, то поиск будет происходить в текущей директории, а также ( сюрприз !!) и в директориях, указанных в переменной PATH.

Почему именно так? А потому что утилита where заточена под поиск исполняемых файлов и команда
WHERE hello будет искать файлы:
hello
hello.com
hello.exe
hello.vbs
hello.js
hello.bat
hello.cmd
hello.wsh
hello.msc

в текущей директории, а также в директориях, прописанных в переменной PATH.
А откуда взялись эти исполняемые расширения ? А взялись они из переменной PATHEXT

Кроме того, можно завести и свою переменную для спецификации директорий
SET MYPROJECT=C:\USERS\SMITH;C:\USERS\SMITH\PROJECT_1;C:\USERS\SMITH\PROJECT_2
и обращаться к ней вот так для поиска file.ext: WHERE $MYPROJECT:file.ext

Здесь самое время перейти ко второй части способов использования WHERE, а именно, к стратегии:

Если файл найден, то делаем ВОТ_ЭТО, а если нет, то ЭТО

Для этого у WHERE есть ключ /Q,который устанавливает переменную errorlevel,
ничего не выводит на экран и делает возможным следующую конструкцию,
которую показал нам greg zakharov, прежде чем уже в который раз покинуть этот мир форум:

Windows Batch file
1
@WHERE /Q file.ext && echo Нашёлся, голубчик !!! || echo Всё пропало, шеф !
Маленькое дополнение:
Как быть, если захочется воспользоваться возможностями утилиты WHERE из под powershell ?
У powershell, как известно, тоже есть where ( зарезервированное слово ).
В таком случае надо просто добавить к последнему .EXE, а всё выражение заключить в одинарные кавычки

PowerShell
1
Where.exe '$MYPROJECT:file.ext'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2019, 23:59
Помогаю со студенческими работами здесь

Проверка наличия файла в папках
Добрый день! Пытался найти решение дабы адаптировать его под себя, но не справился с этим, поэтому прошу помощи в решении такой проблемы:...

Проверка наличия файла по маске
Подскажите, пожалуйста, как подправить этот батник: @echo off for %%i in ("345*_*.txt") do set FileName="%%i" if...

Проверка наличия файла в папке + действие
Добрый день, так как не нашел ответа нужного на форуме создал тему: Суть такова: Нужен бат файл который будет чекать 2 папки на диске...

Проверка наличия файла с определённым расширением
Добрый вечер! Есть некая папка с большим количеством вложенных папок и файлов разных расширений. Подскажите, как можно быстро найти...

Проверка наличия файла или подкаталога в каталоге
Добрый день! Просьба помочь в построении конструкции, которая позволит определять пустой каталог или в нём имеется файл(-ы) и(или)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru