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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сделать бат файл, который архивирует файлы по их созданию по месяцам

Ответить
Настройки темы
CMD/BAT - [решено] сделать бат файл, который архивирует файлы по их созданию по месяцам

Пользователь


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

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


Здравствуйте!

Мне нужно помощь, буду очень благодарен за любой совет.
не могу сделать бат файл, который архивирует файлы по их созданию по месяцам.
например в папке "Дос" лежит файлы, один из которых создан 30.11.2011 в 11 ночи, другой создан 01.12.2011. 1 ночи после архивации они должны лежать в двух архивах, например 1. 11.2011.rar,
2. 12.2011. Я делал так, но у меня по расписанию архивация запускается каждый день в 18:00 :
"C:\Program Files\WinRAR\winrar.exe" a -r -df -ag+YYYY-MM "ДОС" но оно сохраняет эти два файла в один в один файл.
Я просто никогда не делал бат файл, и не могу это сделать, прошу помочь!

Отправлено: 12:50, 28-12-2011

 

Ветеран


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

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


Цитата Qwerty!!:
но оно сохраняет эти два файла в один в один файл. »
Разумеется:
Цитата:
Ключ -AG[формат] — добавить к имени архива текущие дату и время
Цитата Qwerty!!:
прошу помочь! »
Объясните, как из дат создания «30.11.2011 в 11 ночи» и «01.12.2011. 1 ночи» Вы выводите «например 1. 11.2011.rar,
2. 12.2011».

Отправлено: 15:25, 28-12-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


не пойму/
чем вас не устраивает такая форма&
Код: Выделить весь код
"C:\Program Files\WinRAR\winrar.exe" a -r -df -ag+YYYY-MM-DD "ДОС"
или я просто не понял сути вопроса

Отправлено: 13:47, 29-12-2011 | #3


Ветеран


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

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


RedX, автору нужно помещать файлы в архивы, имеющие имена как-то связанные со временем создания этих самых файлов. Ждём разъяснений.

Отправлено: 18:35, 29-12-2011 | #4


Пользователь


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

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


Я понял, что файлы, созданные в январе должны находится в архиве 1.2012.rar, в феврале - 2.2012.rar ...

-------
Alex Dragokas


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


Ветеран


Contributor


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

Профиль | Отправить 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


Пользователь


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

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


RedX,
Дело в том что, он срабатывает так: если я задание поставил в 6 вечера, тогда он все файлы принятые после 6, будет вкладывать в другой архив. Мне нужно например программа приняла файлы в базу 10 штук, архив должен определить время их создания, после закинуть в архив или создать новый архив если его нет с текущей датой с именем. а данная команда так не делает, он тупо архивирует все в один архив, когда он будет запущен.
например в папке находится 15 файлов, 5 из которых был принят в 01.01.2012, а еще 5 были приняты в 02.01.2012, а еще 5 были приняты в 03. 01.2012, после запуска бат файла, он должен создать 3 архива с именем, например 01012012ТТ.rar, 02012012ТТТ.rar и 03012012ТТТ.rar.

Отправлено: 13:38, 04-01-2012 | #7


Пользователь


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

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


megaloman, megaloman, megaloman, megaloman, Diskretor,
Здравствуйте.
Я так и хочу, но при моей команде он в принципе архивирует, но те файлы которые были получены после архивации он включает его уже в другой архив.

Отправлено: 13:54, 04-01-2012 | #8


Пользователь


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

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


[b]megaloman[/
Здравствуйте!
Извините я не правильно отписался, он работает. А как сделать чтобы он сработал с сетевым диском? на клиентской машине подключен сетевой диск, и чтобы он запускался от туда, а не на сервере?

Отправлено: 09:15, 05-01-2012 | #9


Пользователь


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

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


megaloman

Просто я пробовал, он не может определить сетевой пусть. Я Вот здесь
Set From=E:\Delete
Set To=E:\Delete.rar

написал так
{chcp 1251 и с ним и без него пробЫвал.}
Set From=Z:\информационные технологии\данные\дос
Set To=Z:\информационные технологии\архив\дос.

не может определить сетевой пусть, и архивирует туда откуда запустил бат файл. А так на локалке работает отлично.

Отправлено: 12:44, 05-01-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сделать бат файл, который архивирует файлы по их созданию по месяцам

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как сделать скрипт, который запускает определённую программу или файл VadimN96 Автоматическая установка Windows 2000/XP/2003 1 07-01-2011 21:24
CMD/BAT - Возможно ли создать бат файл который считывал бы раз в сессию внешний ip и ... karpinsk Скриптовые языки администрирования Windows 6 11-12-2010 11:04
CMD/BAT - [решено] Бат файл для копирования, копировать каталог в много мест rexover Скриптовые языки администрирования Windows 1 15-04-2010 08:04
CMD/BAT - батник который считает файлы LeonanVasia Скриптовые языки администрирования Windows 1 28-09-2009 05:55
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50




 
Переход