Автор: Serhi84
Дата сообщения: 31.01.2008 13:58
Народ, здравствуйте.
Задача, в процессе которой возникли проблемы с её решением - есть папка, содержащая файлы и подпапки с файлами. Необходимо выявить файлы, дата модификации которых не больше определенной даты. В качестве параметров передавать:
1) имя каталога с файлами, в котором нужно производить поиск
2) признак поиска в подпапках(например 1 - просматривать файлы в подпапках, 0 - анализировать только файлы в корне исходной папки, не учитывая подпапок)
3) количество дней (не больше 31), которое вычитается из текущей даты. Полученная дата сравнивается с датой создания/модификации файлов в папке. Если существуют файлы старее
полученной даты - высылается уведомление на email.
4). маска для поиска файлов (например *.txt - анализируем на старость только текстовые файлы).
передать параметры при запуске программы не составит труда. Отправку на email сделал vbs-кой и буду вызывать её из bat`ника. Вычитание из текущей даты количества дней тоже в принципе представляю как делать (немножко изменить код в вышеперечисленных сообщениях где получали текущую дату -1 день).
НО!!!!!
Когда получаю дату создания/модификации файла - результат выходит вместе со временем
For %%i In (c:\scr\*) Do SET create=%%~ti
ECHO %create%
То есть мне нужно из возвращаемого значения как то выделить только дату, чтобы я мог сравнить это значение с другой датой. Вот в этом и загвоздка. Без времени данную строку не получить, функций для возврата части строки тоже нет. Не представляю как это сделать.
И еще вопрос - как сравнить 2 даты? Что-то типа
IF "30.01.2009" > "30.01.2008"
не срабатывает.
Хотел писать все на vbscript, но не знаю как там внутри скрипта описать параметры для запуска....
Вообще можно ли такую задачу реализовать с помощью vbscript или bat-файла ? либо придется искать что-то другое....
Добавлено:
Такс...с первой частью разобрался. Сначала вывожу дату/время модификации файлов в текстовый файл , а потом считываю его построчно
CD c:\scr\
for /F "tokens=1* delims= " %%i in (dates.txt) do @echo %%i
Остается маленький вопрос - как сравнить 2 даты?
И еще - можно ли результат выполнения команды For %%i In (c:\scr\*) Do ECHO %%~ti писать не в текстовый файл и из него считывать, а сразу передавать данные на вход команды for /F "tokens=1* delims= " %%i in (??? что тогда будет здесь ???) do @echo %%i