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

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

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

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


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

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


Добрый день, знаю тем подобных много, пересмотрел разные и что накопал хотелось бы доработать. Пожалуйста посмотрите.
Архивирование:
Код: Выделить весь код
Set Gde1=D:\тест
Set Gde2=D:\тест2
Set Gde3=D:\тест3

Set Kuda=D:\тест1

Set TDate=%date:~6,4%"."%date:~3,2%"."%date:~0,2%

"%programfiles%\WinRar\Winrar.exe" a -r -ed -m1 -df -to7d %Kuda%\%TDate%_почта.rar %Gde1%\*.*
"%programfiles%\WinRar\Winrar.exe" a -r -ed -m1 -df -to7d %Kuda%\%TDate%_сканы.rar %Gde2%\*.*
"%programfiles%\WinRar\Winrar.exe" a -r -ed -m1 -df -to7d %Kuda%\%TDate%_загрузки.rar %Gde3%\*.*
Так как есть папки сканов и загрузок их тоже архивируем. Все работает, вопрос только грамотно ли я оформил этот скрипт, в смысле каждая переменная для каждой архивируемой папки?
Папка "Почта" в общем доступе, нужны какие то манипуляции для удачного удаления и архивирования, если вдруг кто то открыл файлы?
Архиватор не удаляет в "Почте" папки структуры(D:\Почта\Отдел(Экономический, Юридический и тд.)\In(Out)), как и все остальные (ключ -ed).
Нашел такой код для удаления пустых папок с исключением:
Код: Выделить весь код
Set Folder=D:\тест
Set NoFolDel=D:\тест\Бухгалтерия\In

Cd /D "%NoFolDel%"
FOR /F "tokens=*" %%f IN ('Dir "%Folder%\*.*" /B /S /A:D  2^>nul^|Sort /R') DO  Rd "%%f" 2>nul
Как изменить код, чтобы удалялись лишние пустые папки со всех уровней кроме структурных?

Отправлено: 17:15, 28-12-2015

 

Ветеран


Contributor


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

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


sindrom_89,
Цитата sindrom_89:
Спасибо за интересное решение, очень благодарен! »
Пожалуйста, но оно не оказалось для Вас полезным.
Опять начинаем с постановки задачи, которую Вы изложили и к которой есть вопросы:
Нужно написать bat, который будет архивировать дампы БД по маске KoDB*.bak которые старше "today - 7 days" Откуда берётся дата файла? Из свойств файла или она содержится в имени? Что Вы хотите, чтобы каждый файл по маске архивировался отдельно и имя архива совпало с именем файла ? Подробнее сообщите формат имени файла. Подозреваю, что каждый файл с именем типа:
KoDB_ГГГГММДДхххххх.bak должен заархивироваться в файл KoDB_ГГГГММДДхххххх.rar или KoDB_ГГГГММДДхххххх.bak.rar. Это так?
Иначе откуда возьмутся заархивированные файлы в папке D:\Archive с именем KoDB_20170530090001 или KoDB_20170515090000?

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


Последний раз редактировалось megaloman, 31-05-2017 в 18:40.


Отправлено: 18:22, 31-05-2017 | #11



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

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


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


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

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


Добрый день. Подскажите плиииз.
С копированием я разобрался:
xcopy \\192.168.100.100\name\name2\name.bak D:\name /f /y
Как мне заставить архивироваться уже скопированный файл name.bak в папку D:\name с дальнейшим удалением исходного name.bak ??

Отправлено: 14:29, 08-04-2021 | #12


Ветеран


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

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


Код: Выделить весь код
7z a D:\name.zip name.bak -sdel
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:11, 08-04-2021 | #13


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


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

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


А путь к 7z прописывать не нужно? И путь у меня D:\name\name.bak, а архивировать я хочу сам файл в папке а не всю папку.
не правильнее было бы
7z a D:\name\name.zip name.bak -sdel

Последний раз редактировалось KOTBUS, 09-04-2021 в 09:48.


Отправлено: 09:31, 09-04-2021 | #14


Ветеран


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

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


Цитата KOTBUS:
А путь к 7z прописывать не нужно? »
Если у Вас путь к исполняемому файлу 7z.exe/7za.exe содержится в PATH — то не нужно. Если не содержится — то нужно.

Цитата KOTBUS:
И путь у меня D:\name\name.bak, а архивировать я хочу сам файл в папке а не всю папку.
не правильнее было бы
7z a D:\name\name.zip name.bak -sdel »
Рекомендуется а) более чётко ставить техзадание изначально и б) ознакомиться с документацией 7-Zip. И тогда можно уже будет задавать конкретные вопросы: «мои исходные условия такие-то, я попробовал сделать вот так, получил вот то-то и то-то, а мне нужно вот то-то и то-то».
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 09-04-2021 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2012 R2 - [решено] Удаление файлов старше 100 дней DJ Mogarych Windows Server 2012/2012 R2 6 07-06-2014 02:16
Любой язык - [решено] Удаление файлов старше N дней DOCznet Скриптовые языки администрирования Windows 2 27-09-2012 11:42
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. Joni Скриптовые языки администрирования Windows 6 11-07-2012 11:18
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов white155 Скриптовые языки администрирования Windows 6 04-01-2012 00:42
Прочее - удаление файлов старше 10 дней admin666 Общий по Linux 1 23-07-2009 19:09




 
Переход