![]() |
сделать бат файл, который архивирует файлы по их созданию по месяцам
Здравствуйте!
Мне нужно помощь, буду очень благодарен за любой совет. не могу сделать бат файл, который архивирует файлы по их созданию по месяцам. например в папке "Дос" лежит файлы, один из которых создан 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 "ДОС" но оно сохраняет эти два файла в один в один файл. Я просто никогда не делал бат файл, и не могу это сделать, прошу помочь! |
Цитата:
Цитата:
Цитата:
2. 12.2011». |
не пойму/
чем вас не устраивает такая форма& Код:
"C:\Program Files\WinRAR\winrar.exe" a -r -df -ag+YYYY-MM-DD "ДОС" |
RedX, автору нужно помещать файлы в архивы, имеющие имена как-то связанные со временем создания этих самых файлов. Ждём разъяснений.
|
Я понял, что файлы, созданные в январе должны находится в архиве 1.2012.rar, в феврале - 2.2012.rar ...
|
Как я понимаю, файлы должны архивироваться в архивы с именами по времени создания, а не по времени, когда был запущен WinRar. Вот вариант решения. Предполагаю, что формат даты в системе установлен как дд.мм.гггг, в противном случае надо подкорректировать строку
Set DataFile=!DataFile:~6,4!!DataFile:~3,2! В результате работы создаются архивы файлов из папки E:\Delete в папке E:\Delete.rar под именами, соответствующими дате файла. Я предпочитаю имена вида ГГГГММ.rar -они логически хорошо сортируются по имени. Код:
@Echo On Set DataFile=!DataFile:~6,4!!DataFile:~3,2!!DataFile:~0,2! При этом будем иметь архивы вида ГГГГММДД.rar Не важно, когда запускаем архивацию, важна дата последней модификации файла. Все файлы с этой одинаковой датой попадут в один архив вне зависимости от того, когда этот файл попал в директорию или когда запустили архиватор. Можете через неделю запустить архиватор - фаилы разбредутся по нужным архивам. Для сетевых папок отдельно не проверял, но, ИМХО, при указании сетевого пути папок батник будет работать, лишь бы хватало для этого пров доступа. |
RedX,
Дело в том что, он срабатывает так: если я задание поставил в 6 вечера, тогда он все файлы принятые после 6, будет вкладывать в другой архив. Мне нужно например программа приняла файлы в базу 10 штук, архив должен определить время их создания, после закинуть в архив или создать новый архив если его нет с текущей датой с именем. а данная команда так не делает, он тупо архивирует все в один архив, когда он будет запущен. например в папке находится 15 файлов, 5 из которых был принят в 01.01.2012, а еще 5 были приняты в 02.01.2012, а еще 5 были приняты в 03. 01.2012, после запуска бат файла, он должен создать 3 архива с именем, например 01012012ТТ.rar, 02012012ТТТ.rar и 03012012ТТТ.rar. |
megaloman, megaloman, megaloman, megaloman, Diskretor,
Здравствуйте. Я так и хочу, но при моей команде он в принципе архивирует, но те файлы которые были получены после архивации он включает его уже в другой архив. |
[b]megaloman[/
Здравствуйте! Извините я не правильно отписался, он работает. А как сделать чтобы он сработал с сетевым диском? на клиентской машине подключен сетевой диск, и чтобы он запускался от туда, а не на сервере? |
megaloman
Просто я пробовал, он не может определить сетевой пусть. Я Вот здесь Set From=E:\Delete Set To=E:\Delete.rar написал так {chcp 1251 и с ним и без него пробЫвал.} Set From=Z:\информационные технологии\данные\дос Set To=Z:\информационные технологии\архив\дос. не может определить сетевой пусть, и архивирует туда откуда запустил бат файл. А так на локалке работает отлично. |
Qwerty!!, Дело не в сетевом пути, а в неточностях при написании батника. Исправил, пробуйте :cool:
Я пишу батники в 866 кодировке |
megaloman спасибо тебе!!
помогло, все отлично работает. правда я тока добавил chcp1251, после это заработал. |
Время: 18:52. |
Время: 18:52.
© OSzone.net 2001-