|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Архивация содержимого папки по размеру |
|
CMD/BAT - Архивация содержимого папки по размеру
|
Новый участник Сообщения: 29 |
Доброго времени суток!
Подскажите пожалуйста как при помощи CMD/BAT реализовать следующее: В папке (input) лежат папки и файлы (все время разные по названию и немного отличаются по размеру 5-10КБ), например: images\ files\ rss1.xml robots.txt sitemap.xml sitemap58.php sitemap57.php sitemap56.php sitemap55.php ... art-218011.php Требуется создать архивы по 7,5МБ+-1МБ. Имя архива по названию родительской папки плюс порядковый номер, в итоге должно получиться примерно так: input1.zip (содержит: images\ files\ rss1.xml robots.txt) input2.zip (содержит: sitemap.xml sitemap58.php sitemap57.php) input3.zip (содержит: sitemap56.php sitemap55.php) и т.д. Если реализация по размеру архива 7,5МБ сложна в реализации - вполне подойдет: берем из папки первые (100-200) файлов - пакуем их в input1.zip, следующие (100-200) в input2.zip и так пока не кончатся папки и файлы в папке input. Заранее благодарен! |
|
Отправлено: 15:13, 10-11-2015 |
Новый участник Сообщения: 29
|
Профиль | Сайт | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 12:19, 23-11-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вот так?
@Echo Off CLS Set "P0=%~dp0" Set /A SMax=7500 Set /A SAve=10 Set /A Perc=80 Set /A NIn=%SMax%*100/%SAve%/%Perc% echo %NIn% rem Set /A NIn=111 Set "DirIn=E:\Games\Сокровища Монтесумы\Data" Set "DirArc=E:\Delete" Set ARC="C:\Program Files\WinRAR\Rar.exe" a -r FOR /F "usebackq tokens=2,3,* delims=\" %%i IN ('%DirIn%') DO ( Set "NArc=%Date:~6,4%%Date:~3,2%%Date:~0,2%-%%i" Set "NDir=%%i" rem Set "PDir=%%j\%%k" Set "PTmp=%Tmp%\%%i" ) SetLocal EnableExtensions EnableDelayedExpansion Call :OutTmp "%DirIn%" xcopy "%DirIn%\*.*" "%OTmp%\" /t /e /y >nul cd /d "%OTmp%" cd .. Set "PDir=%DTmp%" Set /A N=1 Set /A M=0 FOR /F "usebackq delims=" %%i IN (`dir "%DirIn%\" /b /A:-D /s 2^>nul`) DO ( Call :OutTmp "%%i" Copy "%%i" "!OTmp!" >nul Set /A M=!M!+1 If !M! GEQ %NIn% ( Call :OutTmp "%DirIn%" echo !M! "%DirArc%\%NArc%!N!.rar" "%PDir%\" %ARC% "%DirArc%\%NArc%!N!.rar" "%PDir%\*.*" >nul rd "%OTmp%" /s /q xcopy "%DirIn%\*.*" "%OTmp%\" /t /e /y >nul Set /A N=!N!+1 Set /A M=0 ) ) If NOT !M!==0 ( echo !M! "%DirArc%\%NArc%!N!.rar" "%PDir%\" %ARC% "%DirArc%\%NArc%!N!.rar" "%PDir%\*.*" >nul ) cd /d "%P0%" rd "%Tmp%\%NDir%" /s /q GoTo :Eof :OutTmp Set "DTmp=%~nx1" Set "OTmp=%Tmp%%~pnx1" GoTo :Eof |
------- Отправлено: 20:43, 23-11-2015 | #12 |
Новый участник Сообщения: 29
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 10:27, 25-11-2015 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Ом мани падме хум :-)
@Echo Off CLS Set "P0=%~dp0" Set /A SMax=7500 Set /A SAve=10 Set /A Perc=80 Set /A NIn=%SMax%*100/%SAve%/%Perc% echo %NIn% rem Set /A NIn=111 Set "DirIn=E:\Games\Сокровища Монтесумы\Data" Set "DirArc=E:\Delete" Set ARC="C:\Program Files\WinRAR\Rar.exe" a -r FOR /F "usebackq tokens=2,3,* delims=\" %%i IN ('%DirIn%') DO ( Set "NArc=%Date:~6,4%%Date:~3,2%%Date:~0,2%-%%i" Set "NDir=%%i" Set "PTmp=%Tmp%\%%i" ) SetLocal EnableExtensions EnableDelayedExpansion Call :OutTmp "%DirIn%" xcopy "%DirIn%\*.*" "%OTmp%\" /t /e /y >nul cd /d "%OTmp%" Set "PDir=%DTmp%" Set /A N=1 Set /A M=0 FOR /F "usebackq delims=" %%i IN (`dir "%DirIn%\" /b /A:-D /s 2^>nul`) DO ( Call :OutTmp "%%i" Copy "%%i" "!OTmp!" >nul Set /A M=!M!+1 If !M! GEQ %NIn% ( Call :OutTmp "%DirIn%" echo !M! "%DirArc%\%NArc%!N!.rar" "%PDir%\" %ARC% "%DirArc%\%NArc%!N!.rar" *.* >nul rd "%OTmp%" /s /q 2>nul xcopy "%DirIn%\*.*" "%OTmp%\" /t /e /y >nul Set /A N=!N!+1 Set /A M=0 ) ) If NOT !M!==0 ( echo !M! "%DirArc%\%NArc%!N!.rar" "%PDir%\" %ARC% "%DirArc%\%NArc%!N!.rar" "*.*" >nul ) cd /d "%P0%" rd "%Tmp%\%NDir%" /s /q GoTo :Eof :OutTmp Set "DTmp=%~nx1" Set "OTmp=%Tmp%%~pnx1" GoTo :Eof |
------- Отправлено: 14:58, 25-11-2015 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Архивация папки в vbs | and331 | Скриптовые языки администрирования Windows | 0 | 17-08-2013 15:15 | |
Любой язык - Скрипт для распределения файлов по папкам кучками по n-ому размеру | DmitryAnatolich | Скриптовые языки администрирования Windows | 9 | 06-05-2013 15:20 | |
Доступ - Запрет на печать содержимого папки | SanCho | Microsoft Windows 7 | 3 | 15-05-2012 17:32 | |
[решено] запрет просмотра содержимого папки | dimds | Microsoft Windows NT/2000/2003 | 4 | 25-03-2011 09:43 | |
Ограничить размер содержимого папки | clin | Microsoft Windows NT/2000/2003 | 6 | 12-12-2008 13:55 |
|