|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск самого свежего файла |
|
CMD/BAT - Поиск самого свежего файла
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Ребят, помогите написать bat файл, который бы искал самый свежие файл каждого расширения в указанной директории. То есть в папке Files находится много файлов разных расширений, например .doc, .excel, .txt и т.д. и таких файлов несколько. Так вот нужно найти самый свежий файл из .doc, .excel и так по всем расширениям. Вот бат файл, который ищет просто самый свежий файл, но как сделать, чтобы искал по каждому расширению не знаю. Если кто нибудь сделает, буду очень благодарен.
@echo off for /f "delims=" %%i in ('dir C:\Files\ /B /A-D /OD /TA') do (set file=%%i) echo %file% pause |
|
Отправлено: 23:21, 25-05-2016 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Vasya1998,
Если Дата/Время файла отображается в виде ДД.ММ.ГГГГ чч:мм, то вот вариант (поиск с точностью до минуты)
@Echo Off cls Set "BoxIn=D:\CMD_Forum" Set "Mask=*.*" Set "NFname=" Set "DTfile=" Set /A NFdate=0, NFtime=0 For /F "usebackq delims=" %%j IN (`2^>nul Dir /A:-D /B /O:-D /T:W "%BoxIn%\%Mask%"`) DO (Call :NewFile "%BoxIn%\%%j" &GoTo :Cont) :Cont For /F "usebackq delims=" %%i IN (`2^>nul Dir /A:D /S /B /O:-D /T:W "%BoxIn%"`) DO Call :DirFiles "%%i" "%Mask%" Echo %DTfile% %NFname% Pause GoTo :Eof :DirFiles For /F "usebackq delims=" %%j IN (`2^>nul Dir /A:-D /B /O:-D /T:W "%~1\%~2"`) DO (Call :NewFile "%~1\%%j" &GoTo :Eof) GoTo :Eof :NewFile rem Echo %~t1 %1 Set "Fdate=%~t1" Set /A Ftime=1%Fdate:~11,2%%Fdate:~14,2% Set /A Fdate=%Fdate:~6,4%%Fdate:~3,2%%Fdate:~0,2% If %Fdate% LSS %NFdate% GoTo :Eof If %Fdate% EQU %NFdate% If %Ftime% LSS %NFtime% GoTo :Eof Set /A NFdate=%Fdate%, NFtime=%Ftime% Set "NFname=%~1" Set "DTfile=%~t1" GoTo :Eof |
------- Последний раз редактировалось megaloman, 17-08-2018 в 09:30. Причина: Исправлена ошибка при сравнении даты/времени Отправлено: 22:32, 16-08-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Vasya1998:
в боевом применении, после do, команду echo следует удалить. |
|
------- Последний раз редактировалось YuS_2, 17-08-2018 в 09:51. Причина: поправлено решение Отправлено: 07:41, 17-08-2018 | #22 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать YuS_2, фокус не удастся: файлы по дате, конечно, сортируются, но только в пределах того каталога, в котором находятся. То есть, таким образом мы получим самый свежий файл из… «корневого» для dir каталога (если в нём нет файлов — получим самый свежий файл из первого каталога, и там нет файлов — из первого вложенного в него, нет вложенных — из второго и т.д.). Это не массив объектов и не конвеер PowerShell, увы .
|
Отправлено: 08:11, 17-08-2018 | #23 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
При рекурсивном просмотре файлов, они же выводятся вместе с путями, при этом сначала сортируются по именам каталогов в пути, что бы там в ключах ни нарисовали... казалось бы, какого фига? Но увы, это ведь cmd... Отсюда вывод: переходите на powershell, чтобы не было так мучительно больно... и тоскливо. Поправил исходное решение... |
|
------- Последний раз редактировалось YuS_2, 17-08-2018 в 09:49. Отправлено: 09:27, 17-08-2018 | #24 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 09:49, 17-08-2018 | #25 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 09:56, 17-08-2018 | #26 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 10:06, 17-08-2018 | #27 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Оно работает. Цитата YuS_2:
xcopy "Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "file"." "C:\DestinationDir" xcopy "строка:1 знак:32" "C:\DestinationDir" xcopy "+ &{(dir 'C:\SourceMainDir' -file <<<< -rec|sort -prop creationtime -desc).fullname[0]}" "C:\DestinationDir" xcopy " + CategoryInfo : InvalidArgument: ( [Get-ChildItem], ParameterBindingException" "C:\DestinationDir" xcopy " + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand" "C:\DestinationDir" xcopy " " "C:\DestinationDir" Но, в любом случае, большое спасибо. А вообще, ребята, какие же вы красавчики, что помогаете. Спасибо вам всем за то что вы есть такие добрые. |
||
Отправлено: 10:41, 17-08-2018 | #28 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Vasya1998:
ну, а если случай запущенный (WinXP), то можно так: @echo off set "src=C:\SourceMainDir" set "dst=C:\DestinationDir" for /f "delims=" %%i in ('powershell -ex bypass -c "&{(dir '%src%' -rec|?{!$_.psiscontainer}|sort -prop creationtime -desc).fullname[0]}"') do echo xcopy "%%i" "%dst%" echo excellent! pause&exit Цитата Iska:
вполне функционально и достаточно производительно... ну, если уж powershell совсем не в радость... |
||
------- Последний раз редактировалось YuS_2, 17-08-2018 в 12:07. Отправлено: 11:56, 17-08-2018 | #29 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 12:14, 17-08-2018 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Не работает скрипт копирования самого свежего файла по текущей дате | dark-------13 | Скриптовые языки администрирования Windows | 6 | 18-02-2016 08:42 | |
CMD/BAT - Копирование самого последнего измененного файла | Ua-life | Скриптовые языки администрирования Windows | 2 | 23-04-2015 18:37 | |
CMD/BAT - [решено] Поиск и копирование самого нового файла | V!RTuE | Скриптовые языки администрирования Windows | 1 | 05-02-2015 16:25 | |
CMD/BAT - Построчная перезапись файла и отправка его на адрес почты взятый внутри самого файла | JackL | Скриптовые языки администрирования Windows | 6 | 26-05-2013 12:51 | |
CMD/BAT - [решено] Переименование файла по данным из самого файла | dark-------13 | Скриптовые языки администрирования Windows | 11 | 21-04-2011 18:08 |
|