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

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

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

Новый участник


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

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


Всем привет.

Встала такая задача:
Есть папка, в которую тулзой бэкапятся данные по схеме - новый день->новая папка с файлами.
В итоге необходим батник архивирующий папку и переписывающий созданный архив на внешнее хранилище с последующим удалением созданного архива.
Вся проблема в том, что папку архивировать нужно только за текущий день.

Буду благодарен за любые идеи

Отправлено: 17:24, 12-07-2011

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo off

Set Kuda=\\Server\Backup.arc
Set Otkuda=C:\Backup

Set Rar="C:\Program files\Winrar\Winrar.exe" a -r -tn1d 

FOR /F "usebackq tokens=1,2,3 delims=./-" %%i IN ('%Date%') DO Start "Упаковка" %Rar% "%Kuda%\%%k%%j%%i" "%Otkuda%\*.*"
Kuda-куда пишем упакованные бэкапы за сегодня с именем ГГГГММДД
Otkuda-где исходные бэкапы
Пути пишем в конце без \ и без пробелов
Архив создаём сразу на внешнем хранилище. Поэтому ничего не удаляем. Конкретизируйте задачу, если что-то не нравится.

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

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

Отправлено: 20:07, 12-07-2011 | #2



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

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


Новый участник


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

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


близко но немного не то
конкретизирую задачу.
1. Ищем в C:\Backup папку за текущую дату.
2. Архивируем содержимое этой папки в архив (там могут быть не только файлы, но и папки - соответственно структура должна быть сохранена). Название архива присваивается по имени этой папки (она УЖЕ именуется по формату ГОДМЕСЯЦЧИСЛО). Крайне желательно, чтобы архив не содержал в себе папку верхнего уровня (если отталкиваться от нашего примера, то не должен содержать в себе папку Backup), а начинался сразу с содержимого архивируемой папки.
3. Перемещаем созданный архив на внешнее хранилище.

Отправлено: 15:11, 13-07-2011 | #3


Новый участник


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

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


на ум пришло это:
Код: Выделить весь код
Set Kuda=C:\Temp2
Set Otkuda=C:\Test
Set Rar="C:\Program files\Winrar\Winrar.exe" a -tn1d
FOR /F "tokens=*" %%G IN ('dir /b %Otkuda%') DO Start "Packing" %Rar% "%Kuda%\%%G.rar" "%Otkuda%\%%G\*.*"
но как быть, если архиватор 7z??, в идеале его-то мне и надо использовать

Отправлено: 16:32, 13-07-2011 | #4


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo off
Set Kuda=\\Server\Backup.arc
Set Otkuda=C:\Backup

Set Rar="C:\Program files\Winrar\Winrar.exe" a -r -ep1 

FOR /F "usebackq delims=" %%d IN (`Dir %Otkuda%\*.* /b /A:D`) DO Call :DirToDay "%Otkuda%\%%d" "%%d"
GoTo :Eof

:DirToDay
FOR /F "usebackq tokens=1,2" %%i IN ('%~t1') DO Set DateDir=%%i
If %DateDir%==%Date% (
    %Rar% "%Otkuda%\%~2" %1
    Echo Move /Y "%Otkuda%\*.rar" "%Kuda%\"
    Move /Y "%Otkuda%\*.rar" "%Kuda%\" 
)
GoTo :Eof
Этот вариант найдёт папку(и), изменённую сегодня, упакует её (их, каждую по отдельности) с именем папки, переместит куда укАжите. Первый вариант, не считая имени, практически делает то же самое, единственное, в Rar добавить ключ -ep1 , чтобы в архиве не было базовой директории.
Можете в этом решении использовать 7z, но в строке Set Rar=... пропишите вызов и ключи для 7Z и в Move пропишите нужное расширение. Доберусь до 7Z, приведу решение и с ним (я его ключи не знаю), это совершенно не принципиально.
В первом решении 7Z не прокатит, там нет ключа, аналогичного -tn1d

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


Последний раз редактировалось megaloman, 13-07-2011 в 17:02.

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

Отправлено: 16:53, 13-07-2011 | #5


Новый участник


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

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


Спасибо за идею!
Вот вариант покороче, правда содержит в себе папку верхнего уровня (мало ли кому пригодится...)

Код: Выделить весь код
Set Kuda=\\Server\Backup.arc
Set Otkuda=C:\Backup
Set Rar="C:\Program files\Winrar\Winrar.exe" a -tn1d -ep
FOR /F "tokens=*" %%G IN ('dir /b %Otkuda%') DO Start "Packing" %Rar% "%Kuda%\%%G.rar" "%Otkuda%\%%G\*.*"
Вообщем, тему можно закрыть

Отправлено: 18:12, 13-07-2011 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Копирование папки, а не только ее содержимое ksv_sergo Скриптовые языки администрирования Windows 5 06-07-2011 11:43
"День 7" - на носу: Windows 7 осталось ждать один день OSZone News Новости и события Microsoft 0 21-10-2009 12:30
Доступ - Как снять только чтение с папки? alleclf Microsoft Windows Vista 1 01-10-2009 00:02
Разное - Вылетает експлорер, только при просмотре одной папки с фотками BMW09121985 Microsoft Windows Vista 10 25-04-2009 14:57
Разрешить установку только из определённой папки Gangabass Microsoft Windows NT/2000/2003 4 20-04-2009 09:15




 
Переход