![]() |
Как проверить в определённой директории наличие файлов (не подкаталогов!) ?
Доброго времени суток!
Ситуация такая: есть к примеру каталог D:\aaa\ в нём к примеру есть подкаталоги: D:\aaa\1\ D:\aaa\2\ D:\aaa\333\ я в батнике хочу проверять или не появились в D:\aaa\ какието файлы пробую сделать так: Код:
if exist D:\aaa\*.* goto 1 батник отрабатывает даже если файлов нет... ((( Подскажите пожалуйста как проанализировать на наличие в этом каталоге именно файлов ане подкаталогов? Заранее благодарен! видимо реагирует на подкаталоги... |
SANIOK_AV, попробуйте так:
Код:
copy D:\aaa\*.* D:\aaa\test.tmp && goto 1 |
SANIOK_AV, или так (без Copy):
Код:
dir D:\aaa\* /a-d 2>nul >nul && goto 1 |
gora, Petya V4sechkin, Спасибо огромное!!!
Petya V4sechkin, а как работает dir D:\aaa\* /a-d 2 ? /a-d значит не каталоги... а что значит "2" ? и что значит >nul >nul ? и ещё вопрос: вместо * можно задать маску например qwer*.123 ? |
Цитата:
Просто >nul перенаправляет обычные сообщения (stdout) в nul. Комбинация 2>nul >nul - полностью "тихий" режим (убирает и stdout, и stderr). Цитата:
|
Petya V4sechkin,
то есть если команде dir /a-d есть что показать, то на это направляет в null и переходит на метку "1" я правильно понял? |
и ещё вопросик:
если в этом каталоге (D:\aaa\) уже есть изначально файлы.... и мне надо отследить появление новых файлов... как это можно реализовать? заранее благодарен!!! |
SANIOK_AV, можно сравнивать списки файлов до и после (хотя при этом будут отслеживаться не только появившиеся новые файлы, но и удаленные). К примеру, сначала создаем список во временном lst1.tmp:
Код:
dir D:\aaa\* /a-d /b /on 2>nul >lst1.tmp Код:
dir D:\aaa\* /a-d /b /on 2>nul >lst2.tmp |
Petya V4sechkin, огромное СПАСИБО!!! :oszone:
|
Похожая ситуация только немного другого плана.
Скажем есть тебе папки: D:\aaa\1\ D:\aaa\2\ D:\aaa\333\ Необходимо проверить во всех папках наличие файлов *.inf Есть такой имеется, то записать его путь в D:\aaa\path.txt (Батник будет запускаться с D:\) И еще попутный вопрос. Возможно ли записывать эти пути не на первые строки, а начиная со строки например 82? |
Devils0411, попробуйте так:
Код:
@Echo Off |
gora, а в чем загвоздка проверять вложенные?
|
Цитата:
Можете добавить в перечень и вложенные папки, если они известны: Код:
... |
Моя ошибка, не дописал до конца. В этих трех папках, большое количество подпапок, и писать путь к каждой равносильно копированию путей каждой папки вручную.
|
Пробуй так:
Код:
@Echo off |
Суть такая: Есть папка "aaa" в ней огромное количество подпапок. В большенстве этих папок есть файлы .inf Необходим батник, который проверял бы наличие inf файлов. Если Inf файл есть в папке скажем D:\aaa\vvv\qqq\3\t, то записывал путь в текстовый файл, например в path.txt, и вписывать начинал с 82 строки.
|
Эту часть я реализовал в примере выше.
Поясню: При повторном запуске, если файл Path.txt уже есть, то ВСЕ *.INF файлы из всех подкаталого будут заново добавлены в конец файла Path.txt, в противном случае этот файл будет создан, в нем будет 82 пустые строки, а затем пойдет список всех *.INF файлов. |
хотелось бы усовершенствовать этот вариант:
Код:
dir D:\aaa\* /a-d 2>nul >nul && goto 1 |
|
amel27, обычно папка пуста, но как только в ней появится любой файл, выдать сообщение
|
Цитата:
Код:
:loop |
Хорошо, вот только после сообщения о новых файлах система зависает
|
Цитата:
|
amel27, видимо проблема в цикле, убрал последнюю строку все нормально, теперь проблема, как перезапускать bat-файл после срабатывания?
|
Цитата:
|
занятно, но так комп зависает
|
Цитата:
Код:
ping 127.0.0.1 -n 5 >nul |
Время: 22:07. |
Время: 22:07.
© OSzone.net 2001-