Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2732
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Как я понимаю, файлы должны архивироваться в архивы с именами по времени создания, а не по времени, когда был запущен WinRar. Вот вариант решения. Предполагаю, что формат даты в системе установлен как дд.мм.гггг, в противном случае надо подкорректировать строку
Set DataFile=!DataFile:~6,4!!DataFile:~3,2!
В результате работы создаются архивы файлов из папки E:\Delete в папке E:\Delete.rar под именами, соответствующими дате файла. Я предпочитаю имена вида ГГГГММ.rar -они логически хорошо сортируются по имени.
Код: Выделить весь код
@Echo On
Rem Если Дата в системе в формате дд.мм.гггг 

Set From=Z:\информационные технологии\данные\дос
Set To=Z:\информационные технологии\архив\дос

Set Rar="C:\Program Files\WinRar\WinRar.exe" a -r -df

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

Md "%To%" >nul 1>nul 2>nul

FOR /F "usebackq delims=" %%f IN (`Dir "%From%" /b /s /A:-D`) DO (
   Set DataFile=%%~tf
   Set DataFile=!DataFile:~6,4!!DataFile:~3,2!
   %Rar% "%To%\!DataFile!" "%%f"
)
Если Вам надо архивацию не по месяцам, как Вы написали в заголовке, а по дням, то в цикле подкорректируйте строку, чтобы она приняла вид:

Set DataFile=!DataFile:~6,4!!DataFile:~3,2!!DataFile:~0,2!

При этом будем иметь архивы вида ГГГГММДД.rar
Не важно, когда запускаем архивацию, важна дата последней модификации файла.
Все файлы с этой одинаковой датой попадут в один архив вне зависимости от того, когда этот файл попал в директорию или когда запустили архиватор. Можете через неделю запустить архиватор - фаилы разбредутся по нужным архивам.
Для сетевых папок отдельно не проверял, но, ИМХО, при указании сетевого пути папок батник будет работать, лишь бы хватало для этого пров доступа.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 05-01-2012 в 15:41. Причина: Исправление неточности

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:10, 30-12-2011 | #6