|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывод имен файлов за последние N дней |
|
|
CMD/BAT - [решено] Вывод имен файлов за последние N дней
|
Ветеран Сообщения: 992 |
Профиль | Сайт | Отправить PM | Цитировать
Имеем папку, в ней некоторое количество файлов. Нужно вывести, например, в файл имена файлов
Игрался с forfiles но он, гад, или хочет смотреть в будущее, или в далекое прошлое, или пляшет от фиксированной даты (или я какого ключа не заметил?). |
|
Отправлено: 18:36, 29-05-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Elven:
Цитата:
LogParser: |
||
Последний раз редактировалось Iska, 29-05-2014 в 19:56. Причина: Таковая есть ;) Отправлено: 19:33, 29-05-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Категорически извиняюсь, Iska, совершенно правильно, измененных, а не созданных.
|
Отправлено: 12:33, 30-05-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, так используйте в таком случае «forfiles.exe»:
Цитата:
У Вас будет не «-365», а «-5», «-50», «-500». |
|
Отправлено: 15:38, 30-05-2014 | #4 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Iska, таки вы меня не так поняли. Мне нужно искать не те файлы которые больше N дней не изменялись, а наоборот те которые менялись в течение последних N дней
Накопал тут занятную функцию. Таким образом конечный вариант стал выглядеть таким образом. @echo off set RD=d:\ Call :FromNow -100 forfiles /S /D +%yyyymmdd% /P "%RD%">>files.txt Exit /B :FromNow SetLocal Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set yyyymmdd=%dd:~-2%.%mm:~-2%.%yyyy% Exit /B |
|
Отправлено: 15:39, 30-05-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Elven, ясно. Я неправильно понял. Поменяйте в примере «-» на «+».
У меня не Windows 7, посему «forfiles.exe» доступен только из комплекта Resource Kit'ов, с заметно отличающимся синтаксисом. В моём случае может выглядеть так: "%ProgramFiles%\Resource Kit\forfiles.exe" -pc:\Windows\System32 -m*.* -d+50 -c"cmd /c if /i @ISDIR equ FALSE echo @FILE, @PATH, @FDATE @FTIME" Для сравнения результатов — «LogParser»: "%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Name, Path, LastWriteTime, Attributes FROM 'C:\Windows\System32\*.*' WHERE LastWriteTime >= TO_LOCALTIME(SUB(SYSTEM_TIMESTAMP(), TO_TIMESTAMP(MUL(MUL(MUL(60, 60), 24), 50)))) AND Attributes NOT LIKE 'D________' ORDER BY Name ASC" -i:FS -recurse:0 -q:ON |
Отправлено: 16:31, 30-05-2014 | #6 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Пробовал уже, если использовать плюс forfiles выдает список файлов созданных в будущем (ей-ей не прикалываюсь), менял дату изменения на некоторое время вперед - начинают отображаться. Хотелось бы спросить у мелкомягих два извечных вопроса один из которых "как", а второй будет вырезан цензурой, но боюсь что не ответят.
|
Отправлено: 16:49, 30-05-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Elven:
Кстати, а откуда у Вас могут взяться файлы, изменённые позже текущей даты? Это ведь нонсенс. Записью этой даты управляет сама ОС при модификации файлов. P.S. Если Вам настоятельно нужно добавить условие «И не позже текущей даты» — используйте LogParser. |
|
Отправлено: 17:51, 30-05-2014 | #8 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Georgio, Вы всегда такие интересные конструкции приводите. еще бы комментариями снабжали, было бы в разы интереснее
|
Отправлено: 13:04, 02-06-2014 | #9 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Добрый день! похожая проблема, имеется
в файл выводит абсолютно все файлы из папки, по дате не отбирает Цитата Georgio:
|
|
Отправлено: 10:35, 29-03-2016 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Вывод в файл имен последних файлов в папках | ivanxam | Скриптовые языки администрирования Windows | 2 | 01-10-2013 13:26 | |
2008 R2 - Windows 2008. Пропала вся информация и все изменения за последние 1,5 месяца | alexpetrovich | Windows Server 2008/2008 R2 | 1 | 18-09-2013 20:31 | |
Деятельность Sony оказалась прибыльной впервые за последние пять лет | OSZone News | Новости информационных технологий | 0 | 09-05-2013 13:30 | |
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов | white155 | Скриптовые языки администрирования Windows | 6 | 04-01-2012 00:42 | |
Рекордный за последние 52 недели курс акций компании AMD | OSZone News | Новости информационных технологий | 0 | 17-12-2009 21:30 |
|