![]() |
Поиск самого свежего файла
Ребят, помогите написать 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 |
Код:
@echo off |
Цитата:
|
Flyer61rus,
Понимаете ли, если я укажу любое расширение, то это равносильно тому - найти единственный самый свежий файл, а если есть желание перечислить все известные расширения - пожалуйста, берите из архива ниже и продолжайте список в for. Файл 137041 |
Цитата:
|
Цитата:
|
Цитата:
Скрытый текст
Код:
@echo off Путь к исходной папке указывается параметром пакетного файла. |
Цитата:
Теперь только осталось самому посидеть поразбираться, что значат каждые параметры в этом коде) Еще раз большое Вам спасибо)) |
Цитата:
Цитата:
Общий подход выглядит следующим образом:
|
Цитата:
Цитата:
Конечно, мои вопросы в некотором плане примитивны, но все же, если Вас не особо затруднит подробно рассказать о назначении и синтаксисе каждой переменной, буду очень благодарен. Еще никак не могу разобраться с токенами. В нете почитал, но все же никак не пойму. Второй токен это значит, что в нашем случае будет выводиться %%~xi, так как находится после знака разделителя? Или что это значит? Заранее большое спасибо Вам за ответ! |
Ребята!
Подскажите пожалуйста, как в этом коде использовать найденный файл для копирования в другую директорию. Код:
@echo off 1) найти самый свежий файл с расширением txt в директории 2) скопировать найденный файл в другую директорию с переименованием в alfa.txt 3) если в директории назначения уже существует файл alfa.txt заменить его без подтверждения. куда подставить txt для 1 пункта я понял, на 2 пункте сдулся, с 3 могу разобраться после того как узнаю имя/переменную в пункте 2. |
jenia_ov, не тот тэг используете. Надо [code], а не [spoiler].
Цитата:
Цитата:
Цитата:
Вот пример для а) по дате создания и б) папки задаются параметрами: Скрытый текст
Код:
@echo off |
Iska, файл по дате создания, директории постоянные и неизменные, поэтому могу задаваться и в коде.
Ваш код полностью удовлетворяет потребности! Низкий Вам поклон! |
jenia_ov, хорошо. Тогда вместо использования аргументов просто укажите Ваши конкретные пути вместо выделенного:
Код:
set sSourceFolder=%~1 |
Iska, прошу прощения, сразу не обратил внимание, копируется самый старый файл почему-то.
Да, так и сделал, сначала кинулся ярлык сделал и пути прописал, потом только в код вписал каталоги. |
jenia_ov, попробуйте добавить «-» в «/o:d» в строку:
Код:
`2^>nul dir /b /a:-d /o:d /t:c "%sSourceFolder%\*.txt"` Код:
`2^>nul dir /b /a:-d /o:-d /t:c "%sSourceFolder%\*.txt"` |
Iska, Огромное спасибо, все отлично!
|
jenia_ov, ну, Вы таки попроверяйте всё ж. Может, окажется, что нужна была не дата создания…
|
Iska,
Суть процесса - с сайта клиент банка сохраняется выписка по счету в txt файле, поскольку работа идет из браузера chrome - он сохраняет эту выписку в папку Загрузки, как и все что скачивается через него. С помощью этого батника, самый свежий по дате создания txt файл копируется в расшаренную папку на сервере с 1С откуда и осуществляется загрузка этого файла. Выписка из банка всегда с разным именем файла (подставляется дата выписки). А поскольку txt файлы на том компе больше никто не качает, то это решение более чем подходит. |
Цитата:
Код:
for /f "tokens=*" %%i in (' dir /b /s /ad "C:\SourceMainDir\" ') do xcopy /e "%%i" "C:\DestinationDir\" |
Vasya1998,
Если Дата/Время файла отображается в виде ДД.ММ.ГГГГ чч:мм, то вот вариант (поиск с точностью до минуты)
Код:
@Echo Off |
Цитата:
Код:
@echo off |
YuS_2, фокус не удастся: файлы по дате, конечно, сортируются, но только в пределах того каталога, в котором находятся. То есть, таким образом мы получим самый свежий файл из… «корневого» для dir каталога (если в нём нет файлов — получим самый свежий файл из первого каталога, и там нет файлов — из первого вложенного в него, нет вложенных — из второго и т.д.). Это не массив объектов и не конвеер PowerShell, увы :).
|
Цитата:
При рекурсивном просмотре файлов, они же выводятся вместе с путями, при этом сначала сортируются по именам каталогов в пути, что бы там в ключах ни нарисовали... казалось бы, какого фига? Но увы, это ведь cmd... :) Отсюда вывод: переходите на powershell, чтобы не было так мучительно больно... и тоскливо. :) Поправил исходное решение... |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Оно работает. :) Цитата:
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" Но, в любом случае, большое спасибо. А вообще, ребята, какие же вы красавчики, что помогаете. Спасибо вам всем за то что вы есть такие добрые. |
Цитата:
ну, а если случай запущенный (WinXP), то можно так: Код:
@echo off Цитата:
вполне функционально и достаточно производительно... ну, если уж powershell совсем не в радость... |
Цитата:
|
Цитата:
Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1 Но может быть, это связано с тем, что я запускал как cmd? У меня с PowerShell вообще никак. Я так то админство много лет назад бросил, но вот случилось, что понадобилось, а я админил когда он только-только появился и всем хватало батников. :) |
Цитата:
Цитата:
|
Цитата:
А в powershell 2.0, просто не поддерживается параметр -file у командлета Get-ChildItem, потому и не взлетело... обновите, как выше посоветовали, до версии 5.1, как минимум... |
Время: 00:29. |
Время: 00:29.
© OSzone.net 2001-