|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов |
|
|
CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов
|
Новый участник Сообщения: 44 |
Профиль | Отправить PM | Цитировать Всем здравствуйте.
Буду крайне признателен если кто-то сможет помочь. Есть папка, в которой куча разных подпапок, часть из которых называется имя_logs. Задача: нужно зайти скриптом в каждую из этих подпапок имя_logs, в которой лежат файлы с расширениями log, zip, файлы zip (старые) не трогать, а файлы log необходимо упаковать в один файл, точнее не в один а в несколько. Нужно собрать файлы по году (взять год времени создания файла), имя результирующего архива: год.zip то есть если есть файлы log, созданные в 2015, 2016 годах, то все log файлы за 2015 год собрать в один архив 2015.zip, а за 2016 в 2016.zip. Да, самое главное. Нужно не брать последний лог файл (за текущий день), а брать начиная со вчерашнего и ранее. И будет здорово, если можно реализовать дозапись новых файлов в 2017 году. То есть пакуем все файлы за 2017 год кроме сегодняшнего в файл 2017.zip, если запустим скрипт на следующий день, то добавляем оставшийся файл log в архив 2017.zip. Да, идеально будет, если использовать 7zip. Надеюсь всё понятно написал. |
|
Отправлено: 17:46, 20-03-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sancher:
|
|
Отправлено: 19:03, 20-03-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать sancher, Экий Вы путаник
1. Нужно собрать файлы по году (взять год времени создания файла), имя результирующего архива: год.zip. Куда поместить этот архив. 2. Не кажется ли Вам, что заархивированные файлы надо удалить? 3. А файлы в архиве хранить с путями? 4. имя результирующего архива: год.zip - а формат архива тоже zip?. Не уверен, но, похоже, 7zip не умеет форматировать в формате Zip. И вообще, с RARом было бы проще. |
------- Последний раз редактировалось megaloman, 20-03-2017 в 21:22. Отправлено: 20:04, 20-03-2017 | #3 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Iska, megaloman, прошу прощения, словесность - не мой конёк )
megaloman, все вопросы по делу, спасибо. 1. Архив оставить в исходной папке имяпапки_log 2. Заархивированные файлы log действительно нужно удалить после успешного сжатия. 3. Нет, файлы нужно хранить без путей. Открыл архив, а внутри просто файлы. 4. Формат архива zip, который можно просмотреть встроенными средствами Windows. Если правильно помню, у 7zip это опция -tzip. C rar-ом проще, но он денег стоит ) |
Отправлено: 08:47, 21-03-2017 | #4 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "BoxIn=Z:\Data" Set "MDir=*_logs" Set "MFil=*.log" Set Arc="C:\Program Files\7-Zip\7z.exe" a -tzip -sdel FOR /F "usebackq delims=" %%d IN (`Dir "%BoxIn%\%MDir%" /S /B /A:D 2^>nul`) DO ( FOR /F "usebackq delims=" %%f IN (`Dir "%%d\%MFil%" /B /A:-D /O-D /T:C 2^>nul`) DO Call :ArcOut "%%d\%%f" ) pause GoTo :Eof :ArcOut FOR /F "tokens=1 delims= " %%i IN ("%~t1") DO Set TFile=%%i If "%TFile%"=="%Date%" GoTo :Eof %Arc% "%~dp1%TFile:~-4%" %1 |
|
------- Последний раз редактировалось megaloman, 21-03-2017 в 10:26. Отправлено: 09:43, 21-03-2017 | #5 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать megaloman, большое спасибо
есть вопрос Set "BoxIn=Z:\Data" - Z:\Data - это корневая папка, в которой мы работаем? если так, то почему BoxIn нигде дальше не используется? я запустил ваш скрипт в таком виде, но он ничего не делает |
Последний раз редактировалось sancher, 21-03-2017 в 10:45. Отправлено: 09:58, 21-03-2017 | #6 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать sancher, Виноват, был невнимателен. Код исправил в двух местах. Пропишите вместо Z:\Data "папку, в которой куча разных подпапок, часть из которых называется имя_logs".
|
------- Отправлено: 10:21, 21-03-2017 | #7 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать megaloman, супер!
мегабольшое человеческое спасибо за вашу помощь! я бы такой скрипт рожал минимум день-два, а может и больше а может вообще бы не осилил так что очень сильно выручили ещё раз благодарю! |
Отправлено: 10:35, 21-03-2017 | #8 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Уважаемый megaloman, помогите, пожалуйста, с другой версией скрипта.
У меня есть папка, в которой большое число других папок, содержащих папки и файлы. Папки имеют названия на русском и на английском языке. Задача: нужно скриптом зайти в каждую папку-подпапку (во все папки в дереве) и архиватором 7zip с уровнем сжатия 1-Скоростной сжать файлы *.log и log*.txt в один архив с именем папки, содержащей эти файлы. После чего исходные файлы удалить. И было бы здорово иметь 2 версию этого же скрипта: архивировать файлы *.log и log*.txt в одной папке в отдельные архивы с именем файла, после чего исходные файлы удалить. |
Отправлено: 16:32, 22-01-2022 | #9 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата:
@Echo Off Set "BoxIn=Z:\Box_Arc" Set "Mask1=*.log" Set "Mask2=log*.txt" Set "BoxOut=Z:\Box_Out" Set ARC="C:\Program Files\7-Zip\7z.exe" a -mx1 -sdel Call :MyArc "%BoxIn%" FOR /F "usebackq delims=" %%d In (`2^>nul Dir /B /A:D /S "%BoxIn%\"`) DO ( Call :MyArc "%%d" ) Exit /B :MyArc If Not Exist "%~1\%Mask1%" If Not Exist "%~1\%Mask2%" Exit /B %ARC% "%BoxOut%\%~nx1.zip" "%~1\%Mask1%" "%~1\%Mask2%" Exit /B |
|
------- Последний раз редактировалось megaloman, 22-01-2022 в 18:40. Отправлено: 18:30, 22-01-2022 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как переделать скрипт удаления папок, на скрипт удаления файлов | ufooo | Скриптовые языки администрирования Windows | 2 | 02-06-2015 12:22 | |
Java - Помогите с алгоритмом | nastr | Программирование и базы данных | 9 | 27-11-2013 16:31 | |
7 / 2008 R2 - Защита Windows 7 от повторной упаковки утилитой sysprep | Ralik | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 2 | 01-06-2011 17:31 | |
помогите с алгоритмом решения задачи | bool | Хочу все знать | 2 | 14-06-2008 18:43 | |
Подскажите, как сделать скрипт | BarsMaster | Вебмастеру | 4 | 26-01-2007 23:15 |
|