|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Паковать папки и переносить последний архив в другую папку |
|
CMD/BAT - Паковать папки и переносить последний архив в другую папку
|
Новый участник Сообщения: 16 |
Профиль | Отправить PM | Цитировать Приветствую
Есть папка 1 с папками бекапов А, Б, С, ...., есть необходимость при появлении новой папки паковать ее в отдельный архив с удалением папки, и копировать архив с последней датой в другую папку 2, предварительно очистив ее. Спасибо |
|
Отправлено: 02:06, 05-04-2024 |
fascinating rhythm Сообщения: 6530
|
Профиль | Отправить PM | Цитировать А папки бекапов А, Б, С должны оставаться там всегда?
|
------- Отправлено: 09:22, 05-04-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Сейчас там остается 3 папки, каждый новый бекап затирает самую старую
|
Отправлено: 10:27, 05-04-2024 | #3 |
Crazy Сообщения: 1183
|
Профиль | Отправить PM | Цитировать Цитата Super_Kolobok:
|
|
------- Отправлено: 12:21, 05-04-2024 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать зачем моментально, бекап по расписанию идет, паковать потом тоже периодически по расписанию
можно совсем упростить - Нужно паковать только последнюю созданную папку |
|
Последний раз редактировалось Super_Kolobok, 05-04-2024 в 14:15. Отправлено: 12:35, 05-04-2024 | #5 |
fascinating rhythm Сообщения: 6530
|
Профиль | Отправить PM | Цитировать Цитата Super_Kolobok:
|
|
------- Отправлено: 18:01, 05-04-2024 | #6 |
Crazy Сообщения: 1183
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата Super_Kolobok:
function Compress-New { param( [Parameter(Mandatory,ValueFromPipeline)] $source, $destination, $swt1, $swt2, $arch ) process{ $aout = $destination + '\' + $_.name + ('_{0:yyyy-MM-dd_HH-mm-ss}' -f (get-date))+'.zip' $compress = @{ Path = $source #CompressionLevel = "Fastest" DestinationPath = $aout } if (!$swt1){ compress-archive @compress if ($swt2) {del $source.fullname -force -rec} } else { if ($swt2) {&$arch a $aout $source -sdel} else {&$arch a $aout $source} } } } # каталог с архивами, лучше указать абсолютный путь: $root = '.\1' # целевой каталог для хранения новых архивов, лучше указать абсолютный путь: $destination = '.\2' $par = @{ Destination = (gi $destination).fullname # путь к файлу внешнего архиватора 7zip Arch = "d:\Program Files\7-Zip\7z.exe" # ключ для выбора вида компрессии: 0 - встроенная упаковка, 1 - внешний архиватор 7zip Swt1 = 1 # ключ для выбора удаления исходных файлов: 0 - не удалять, 1 - удалять Swt2 = 1 } if (dir $par.destination){ del $par.destination -rec -force $null = md $par.destination } dir $root -dir|sort lastwritetime -des|select -first 1|compress-new @par |
||
------- Отправлено: 20:48, 05-04-2024 | #7 |
Ветеран Сообщения: 2715
|
Профиль | Отправить PM | Цитировать Цитата Super_Kolobok:
Цитата Super_Kolobok:
Цитата Super_Kolobok:
Вот вариант: - если в папке 2 уже есть архив последней папки (имя "дата время.7Z"), то ничего не делаем - в противном случае делаем архив самой свежей папки с именем "дата время.7Z" -в случае благополучного завершения архивации очищаем 2 папку от архивов и переносим туда новый архив. @Echo Off &Cls &>nul Chcp 1251 Set "BoxIn=Z:\Box_In" Set "BoxOut=\\192.168.100.23\Test2" Set Arc="C:\Program Files\7-Zip\7z.exe" a -r Pushd "%BoxIn%" || (Echo Folder "%BoxIn%\" not found &Pause &Exit /B 2) For /F "usebackq delims=" %%i In (`2^>nul Dir /B /A:D /T:W /O:D`) Do (Set "DirName=%%i" &Set "DirDate=%%~ti") Set "DirDate=%DirDate::=.%" Set "DirDate=%DirDate:/=.%" Set "DirDate=%DirDate:\=.%" If Exist "%BoxOut%\%DirDate%.7Z" Exit /B 1 %Arc% "%DirDate%.7Z" "%DirName%" &&(Del "%BoxOut%\*7Z" &Move "%DirDate%.7Z" "%BoxOut%\") Popd Exit /B |
|||
------- Отправлено: 09:16, 08-04-2024 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Из папки с архивами разных баз скопировать только последние версии в другую папку | Super_Kolobok | Скриптовые языки администрирования Windows | 1 | 06-08-2022 13:17 | |
CMD/BAT - [решено] скопировать папку в другую папку, открыть sublime_text.exe и отключить обновление | v79italya | Скриптовые языки администрирования Windows | 9 | 04-11-2019 22:17 | |
Создать zip архив папки с подпапками и файлами без корневой папки | blackeangel | Программирование в *nix | 1 | 02-02-2017 10:31 | |
Перенаправление в другую папку | binx | Вебмастеру | 0 | 15-11-2014 23:45 | |
2008 - Чем примонтировать сетевую папку в другую папку? | Actor | Windows Server 2008/2008 R2 | 9 | 20-01-2014 21:58 |
|