Показать полную графическую версию : Поиск последних, созданных файлов
Можно ли на CMD/BAT (если нет то на VBS, но желательно на CMD/BAT) реализовать такое:
Нужно найти на указанном диске или в указанной директории файлы и папки недавно созданные. Маска не указывается - расширения могут быть любые. Применяться такой батник будет для отслеживания файлов и папок которые создаются в момент установки программы. Поэтому в поиске нужно искать последние созданные файлы..
Спасибо!
По разделу искал - нашёл что-то похожее, но сам сделать не могу из-за недостатка знаний.
shao, два вопроса:
1. Почему не воспользоваться имеющимися программами для отслеживания изменений в файловой системе и реестре?
2. Что значит «последние»? Как Вы буквально это понимаете? Созданные за X минут до момента запуска пакетного файла?! Тогда чему равно X?
shao, два вопроса: » ......
Ответы:
1. Все эти программы , в основном нужно устанавливать, а батник - "легкий" много места не занимает..
И это не единственная причина......
2.Это значит - последние по времени создания..
shao, пока Вы внятно не ответите на второй вопрос — вряд ли будет внятный ответ, ибо «последние по времени создания» — расплывчато. Последние по сравнению с каким временем?
может имеется в виду что-то вроде такого
Echo Off
Set Folder=F:\путь к папке
for /f "delims=" %%d in ('dir /b/s/a-d/od "%Folder%\*.*"') do set "$d=%%~nxd %%~td"
echo %$d:~, 100%
Pause>Nul
shao, попробуй regshot (http://sourceforge.net/projects/regshot/), устанавливать не нужно, 72 кб. Ещё посмотри мою утилитку Create_list_files (http://azjio.ucoz.ru/load/vsjo_dlja_autoit3/skompilirovannye_skripty/create_list_files/4-1-0-47), добавляешь в выходной список возраст файла и путь и указываешь сортировку по возрасту.
Столкнулся с одной неприятной особенностью команды DIR - при совместном использовании ключей /S /OD /T сквозная сортировка по дате ВСЕГО списка работает только для даты модификации /TW, для других значений ключа /T (C и A) сортировка проводится лишь внутри отдельных подкаталогов... Т.е. в случае с подпапками сортировать по убыванию даты создания файла/каталога придется отдельно.
Вариант для русской локали (DD.MM.YYYY) и русского/английского интерфейса Windows:
@echo off
if "%~1"=="" (set "$1=.") else set "$1=%~1"
(for /f "tokens=1-2*" %%a in ('dir/s/tc/a/-c "%$1%"') do (set "$a=%%a"& set "$b=%%b"
if defined $a if "%%a"=="Directory" if "%%b"=="of" set "$a="& set "$p=%%~c"
if defined $a if "%%a"=="Содержимое" if "%%b"=="папки" set "$a="& set "$p=%%~c"
if defined $a for /f "tokens=1*" %%C in ("%%~c") do (set "$c=%%C"& set "$d=%%D"
SETLOCAL EnableDelayedExpansion
if "!$b:~2,1!"==":" if not "!$d!"=="." if not "!$d!"==".." (if "!$c!"=="<DIR>" set "$d=!$d!\."
echo !$a:~-4!!$a:~3,2!!$a:~,2!%%b#%%a %%b !$p!\!$d!)
ENDLOCAL
)))>"%~dpn0.tmp"
(for /f "tokens=1* delims=#" %%a in ('sort/r /l "C" "%~dpn0.tmp"') do @echo %%b
)|more
shao, попробуй »
Спасибо, регшот не подходит - нужно отследить созданные файлы , а мониторить реестр.
А вторую утилиту я попробую...
amel27
ваш скрипт оставляет файл *.tmp, зачем?
ваш скрипт оставляет файл *.tmp, зачем? »чтобы было видно как он работает
amel27, Я правильно понял - для сортировки списка файлов отдельно по каждой папке нужно каждый раз указывать путь к ней ?
shao, скрипт сортирует содержимое ОДНОЙ папки с подкаталогами (как и указано в топике), путь к папке передается параметром батника, если не указан - сканируется текущая папка
сортировки списка файлов отдельно по каждой папке »это другая задача и сразу встаёт вопрос о формате вывода, о чём уже говорил Iska
shao, скрипт сортирует содержимое ОДНОЙ папки с подкаталогами (как и указано в топике), путь к папке передается параметром батника, если не указан - сканируется текущая папка »
Отлично! Это и нужно.
Извините, наверное не совсем коректно сформулировал вопрос.
Как раз это и нужно - сортировать содержимое указанной директории с подкаталогами!
И ещё пожалуйста объясните :
"Directory" - указать папку в которой производится сортировка
А что такое "Содержимое" и "папки" ?
"Directory" - указать папку в которой производится сортировка
А что такое "Содержимое" и "папки" ? »пример:dir/s "%temp%"
результат для русского интерфейса: ...
Содержимое папки C:\DOCUME~1\user~1\LOCALS~1\Temp\msohtml
03.06.2011 16:58 <DIR> .
03.06.2011 16:58 <DIR> ..
0 файлов 0 байт
Содержимое папки C:\DOCUME~1\user~1\LOCALS~1\Temp\msohtml1
07.06.2011 19:33 <DIR> .
07.06.2011 19:33 <DIR> ..
07.06.2011 19:33 <DIR> 01
0 файлов 0 байт
...
для английского интерфейса:...
Directory of C:\DOCUME~1\user~1\LOCALS~1\Temp\msohtml1
07.06.2011 19:33 <DIR> .
07.06.2011 19:33 <DIR> ..
07.06.2011 19:33 <DIR> 01
0 файлов 0 байт
...
amel27, Я имею в виду: в Вашем коде нужно указывать какие-либо данные ?
Как/где указать путь к сканируемой директории ? Или батник нужно запускать только с той директории...
AZJIO, Спасибо, отличная программка !
Только встречно назревает вопрос :
Предоставленная программа формирует список файлов по заданным параметрам, только вот никак не удаётся этот список построить так , чтобы файлы указывались по дате - по возрастанию или убыванию.
Список формируется по дате вразброс... (И почему-то путь к файлам указывается только с указанием родительской директории. Без указания каталогов и подкаталогов. )
Подскажите уважаемые , как при помощи батника скопировать из списка
список файлов, созданных по дате создания последними .
Параметры отображения списка могут быть любые.
То есть : Путь, размер, название файла, дата создания, дата изменения.
Спасибо !
Как/где указать путь к сканируемой директории ? »
в командной строке:script.BAT "C:\TEST"..или через "отправить": http://forum.oszone.net/post-1693210-14.html
shao не удаётся этот список построить так , чтобы файлы указывались по дате - по возрастанию или убыванию. Там вообще то есть галка "Сортировка по убыванию". А вообще я после вчерашнего поста обновил, в связи с тем, что я как бы её предложил, но сортировать по возрату в виде идеального списка не получится, так как дата это не число и на участках списка будет разброс. Поэтому вчера добавил критерий "возраст в секундах", здесь обычное число и сортировка идеальная (возраст изменения в секундах). Если требуется именно создание, то придётся мне добавлять критерий. Посмотри раскрывающийся список сортировки, может всё таки текущий вариант устроит.
И для удобства добавил поддержку ком-строки и твик реестра, который добавит утилитку в контекстное меню папки и сделал сохранение всех параметров (шаблона, критерий сортировки)в ini. Теперь один раз настроив шаблон окрываем из контекстного меню, нажимаем старт, получаем открытый в блокноте список. Если что пиши прям на страничке утилиты, если есть какие предложения по программе, а то здесь тема по cmd/bat-файлам.
(И почему-то путь к файлам указывается только с указанием родительской директории. Без указания каталогов и подкаталогов. ) не должно так быть, наоборот указывается либо абсолютный путь, либо относительный. На всякий случай проверю на Win7, но там обычная регулярное выражение и выдать родительский директорий ни как не может, такого даже нет в доступных элементах.
На Win7 пути нормальные, как я и говорил. На счёт сортировки используйте критерий "возраст в секундах" и главное чтоб была правильно установлена текущая дата, иначе, если дата старая то файлы будут из будущего (отрицательное число в списке) и тогда сортировка может оказаться некорректной.
AZJIO, Давайте, может создайте отдельную тему по Вашей программе. Я предоставлю скрин и текст
созданного списка файлов. Там и обсудим.
Модераторов попросим, чтобы перенесли в тему все посты....
Программа интересная и нужная . Думаю, пользователям пригодится...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.