@unk1nD000

Как скопировать файлы по дате изменения посредством bat?

Посоветуйте, как написать bat файл который:
из %from% копирует в %to% и %to2% файл последний по дате изменения
затем в %to% и %from% оставляет 5 файлов новее по дате изменения (то есть удаляет файлы старее 5-го)
в %to2% оставляет самый свежий файл по дате изменения

Мои знания в данном ремесле ограничиваются изучениями текущего дня (раньше никогда с этим не соприкасался), поэтому буду признателен развернутому ответу с комментариями и примерами рабочего кода.
Так же хотелось бы узнать, как написать подобный скрипт используя PowerShell?
  • Вопрос задан
  • 563 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Развернуто не выйдет - нет под рукой винды. Могу дать направление.

Получить отсортированный по дате изменения список файлов можно с помощью команды: dir /b /a-d /od *
За сортировку отвечает ключ /od, можно получить обратную сортировку, тогда надо задать ключ /o-d. Ключ /a-d удаляет из вывода каталоги (по умолчанию dir выводит и каталоги то же).
Эту команду надо запихнуть в цикл, примерно так:
for /f "tokens=* delims=" %%a in ('dir /od ...') do (
  echo %%a
<тут команды тела цикла>
)

В цикле просто на первой итерации копируете файл в to и to2 и выходите из цикла (goto).
Для дальнейших действий аналогичные циклы по соответствующим каталогам, только пропускаете первых 5 итераций, на остальных файлы удаляете. Пропустить 5 итераций в цикле можно либо счетчиком в теле цикла, либо есть опция цикла skip.
Примерно схема уже должна быть ясна.
Отработайте этапы команды по одному, а потом запихните все этапы в один батник.
Детали применения команд смотри:
dir /?
for /?
set /?
goto /?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы