Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ?

Ответить
Настройки темы
CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ?

Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


Доброго времени суток!
Ситуация такая:
есть к примеру каталог D:\aaa\
в нём к примеру есть подкаталоги:
D:\aaa\1\
D:\aaa\2\
D:\aaa\333\
я в батнике хочу проверять или не появились в D:\aaa\ какието файлы
пробую сделать так:
Код: Выделить весь код
if exist D:\aaa\*.* goto 1
goto end
:1
echo "есть файлы"
:end
не получается...
батник отрабатывает даже если файлов нет... (((
Подскажите пожалуйста как проанализировать на наличие в этом каталоге именно файлов ане подкаталогов?
Заранее благодарен!
видимо реагирует на подкаталоги...

Отправлено: 12:05, 03-03-2009

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


SANIOK_AV, попробуйте так:
Код: Выделить весь код
copy D:\aaa\*.* D:\aaa\test.tmp && goto 1
goto end
:1
del D:\aaa\test.tmp
echo "есть файлы"
:end
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:31, 03-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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



Moderator


Сообщения: 53181
Благодарности: 15432

Профиль | Отправить PM | Цитировать


SANIOK_AV, или так (без Copy):
Код: Выделить весь код
dir D:\aaa\* /a-d 2>nul >nul && goto 1
goto end
:1
echo есть файлы
:end
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:40, 03-03-2009 | #3


Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


gora, Petya V4sechkin, Спасибо огромное!!!

Petya V4sechkin,
а как работает dir D:\aaa\* /a-d 2
?

/a-d значит не каталоги...

а что значит "2" ?

и что значит
>nul >nul
?

и ещё вопрос:
вместо * можно задать маску например qwer*.123 ?

Отправлено: 14:10, 03-03-2009 | #4



Moderator


Сообщения: 53181
Благодарности: 15432

Профиль | Отправить PM | Цитировать


Цитата SANIOK_AV:
а что значит "2" ?
и что значит
>nul >nul
?
Конструкция 2>nul означает, что сообщения об ошибках (стандартный поток stderr) перенаправляются в nul (то есть, скрываются). Иначе команда Dir выдавала бы ошибку "Файл не найден" при отсутствии файлов.

Просто >nul перенаправляет обычные сообщения (stdout) в nul.
Комбинация 2>nul >nul - полностью "тихий" режим (убирает и stdout, и stderr).

Цитата SANIOK_AV:
вместо * можно задать маску например qwer*.123 ?
Да.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:52, 03-03-2009 | #5


Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


Petya V4sechkin,
то есть если команде dir /a-d есть что показать, то на это направляет в null и переходит на метку "1"
я правильно понял?

Отправлено: 15:08, 03-03-2009 | #6


Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


и ещё вопросик:
если в этом каталоге (D:\aaa\) уже есть изначально файлы....
и мне надо отследить появление новых файлов...
как это можно реализовать?
заранее благодарен!!!

Отправлено: 16:26, 03-03-2009 | #7



Moderator


Сообщения: 53181
Благодарности: 15432

Профиль | Отправить PM | Цитировать


SANIOK_AV, можно сравнивать списки файлов до и после (хотя при этом будут отслеживаться не только появившиеся новые файлы, но и удаленные). К примеру, сначала создаем список во временном lst1.tmp:
Код: Выделить весь код
dir D:\aaa\* /a-d /b /on 2>nul >lst1.tmp
Потом чего-то у нас происходит, делаем второй список lst2.tmp и сравниваем (пользуясь тем, что команда Fc возвращает код в ErrorLevel):
Код: Выделить весь код
dir D:\aaa\* /a-d /b /on 2>nul >lst2.tmp
fc lst1.tmp lst2.tmp >nul && goto end

echo список файлов изменен
:end

del lst1.tmp
del lst2.tmp
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:29, 03-03-2009 | #8


Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


Petya V4sechkin, огромное СПАСИБО!!!

Отправлено: 10:57, 04-03-2009 | #9


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Похожая ситуация только немного другого плана.
Скажем есть тебе папки:
D:\aaa\1\
D:\aaa\2\
D:\aaa\333\
Необходимо проверить во всех папках наличие файлов *.inf Есть такой имеется, то записать его путь в D:\aaa\path.txt (Батник будет запускаться с D:\)

И еще попутный вопрос. Возможно ли записывать эти пути не на первые строки, а начиная со строки например 82?

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 16:11, 13-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как проверить наличие процесса? Не флужу AutoIt 0 13-01-2010 07:31
CMD/BAT - [решено] Как скопировать содержимое txt файлов всех подкаталогов в один файл dezertic Скриптовые языки администрирования Windows 3 20-10-2009 12:47
CMD/BAT - [решено] Проверить наличие файла с текущей датой. OlegStarov Скриптовые языки администрирования Windows 4 21-04-2009 12:11
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50
Как проверить JavaScript'ом наличие Flash??? Krendebobel Вебмастеру 10 28-06-2005 16:17




 
Переход