|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Архивация по маске |
|
CMD/BAT - Архивация по маске
|
Пользователь Сообщения: 52 |
привет всем.
имеем 1) 7Zip 2) Структуру папок - год/месяц/дата/заказ(ы) задача: 1) необходимо запаковать с помощью скрипта все каталоги поотдельности, лежащие внутри папки "дата", - заказ001 (далее заказ002, 003....) в архив с сохранением имени "заказ001.7z" (002,003....) 2) удалить заархивированные папки, чтобы остались только архивы должны получить структуру типа - год1/месяц1/дата1/заказ001.7z год2/месяц2/дата2/заказ001.7z ну и так далее, собственно превратить в архивы все что ниже папки "дата" в общем то вот этот скрипт архивирует папки внутри одной папки, типа "дата1\заказ001" (002, 003), но только если его руками класть в папку "дата1", а папки с названием дат лежат в папке с названием "месяц1", можно указать маску хотя бы папки с названием дат, чтобы руками не класть скрипт |
|
Отправлено: 21:06, 30-07-2018 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:20, 30-07-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать формат даты одинаков везде, типа "01.02.16"
|
Отправлено: 22:25, 30-07-2018 | #3 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:47, 30-07-2018 | #4 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать 1 февраля 2016 года.
формат структуры таков: 2015\февраль\01.02.15\заказ001 2015\февраль\01.02.15\заказ002 2016\апрель\01.04.16\заказ001 типа такого. формат названия папки в виде даты такой) в общем подкорректировал скрипт следущющим образом, работает forfiles /S /P H:\SHARE2\test /C "cmd /c if @isdir==TRUE (echo @relpath | findstr /R \"\.\\.*\\.*\\.*\\.*\"> nul && c:\Progra~1\7-zip\7z.exe a -sdel @path.7z -mx9 @path\* && rmdir @path)" pause еще один момент, кроме папок с именами "заказов" рядом лежат еще просто файлы, типа *.jpg и др.. как в этот скрипт добавить команды, чтобы все эти файлы архивировались поотдельности в каждый архив? типа файл: "2015\февраль\01.02.15\картинка001.jpg" стал отдельным архивом. и хорошо бы перед удалением исходной папки архиватор тестировал архив на ошибки, но это необязательно.) |
|
Последний раз редактировалось Skylear, 30-07-2018 в 23:09. Отправлено: 22:58, 30-07-2018 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Skylear, извиняюсь, решил, что подразумевается день месяца, а не дата полностью, а рекомендация моя касалась всего пути
Цитата Skylear:
Цитата Skylear:
только надо понимать, что в таком случае процессы архивации и удаления будут разнесены во времени и совершенно независимы друг от друга |
||
Отправлено: 10:22, 31-07-2018 | #6 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать вот накалякал типа такого скрипта, выполняется вроде.
Set BoxIn="H:\SHARE2\Архивы проектов дизайнеров\2016\Январь" FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar, *.zip, *.7z) DO ( "C:\Program Files\7-zip\7z.exe" x "%%X" -y ) popd ) del /s %BoxIn%\*.zip del /s %BoxIn%\*.rar del /s %BoxIn%\*.7z forfiles /S /P %BoxIn% /C "cmd /c if @isdir==TRUE (echo @relpath | findstr /R \"\.*\\.*\\.*\"> nul && c:\Progra~1\7-zip\7z.exe a -sdel @path.7z -mx9 @path\* && rmdir @path)" Set "BoxIn1=H:\SHARE2\Архивы проектов дизайнеров\2016\Январь" Set "Maska=*.tif" Set "Arc="C:\Program Files\7-zip\7z.exe" a -mx9" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn1%\%Maska%" /b /s /a:-d`) DO ( Echo %%f %Arc% "%%~f.7z" "%%f" ) del /s "%BoxIn1%\"*.tif Set "BoxIn2=H:\SHARE2\Архивы проектов дизайнеров\2016\Январь" Set "Maska2=*.psd" Set "Arc="C:\Program Files\7-zip\7z.exe" a -mx9" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn2%\%Maska2%" /b /s /a:-d`) DO ( Echo %%f %Arc% "%%~f.7z" "%%f" ) del /s "%BoxIn2%\"*.psd Pause 1) разархивирует все архивы, которые есть в данной папке и ее подпапках 2) удаляет эти архивы, оставляя только файлы 3) делает архивацию папок, лежащих в "датах" (но одного месяца, в котором лежит скрипт) 4) удаляет исходники, оставляя архивы 5) архивирует оставшиеся файлы форматов psd и tif, которые найдет в папке и подпапках 6) удаляет файлы psd и tif подправьте, если что-то коряво написано. хотелось бы еще скрипт запускать из любого места, лишь с указанием пути в переменной сверху, (никак не разберусь как это сделать), а так - его надо обязательно класть в папку "месяц" ("декабрь", например), чтобы работал (если положить выше в папку "год", то начнет шерстить в других папках "месяц" (типа "январь" и "март" и все еще оставшиеся, если они есть) - а это неудобно) |
Последний раз редактировалось Skylear, 02-08-2018 в 13:05. Отправлено: 10:36, 31-07-2018 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла | santey007 | Скриптовые языки администрирования Windows | 19 | 22-12-2015 10:43 | |
CMD/BAT - Копирование файлов в папки по маске файла и маске папки (BAT) | skyskiff | Скриптовые языки администрирования Windows | 7 | 20-09-2015 22:41 | |
CMD/BAT - Поиск файлов по маске на удаленных машинах по словарю с выгрузкой в *.txt | gremlintv2 | Скриптовые языки администрирования Windows | 3 | 09-12-2013 04:46 | |
CMD/BAT - розархивация файлов по маске с архива отсортированого по датах | VitHAK | Скриптовые языки администрирования Windows | 1 | 28-12-2009 11:07 |
|