![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Последовательное архивирование файлов в папке. |
|
|
CMD/BAT - Последовательное архивирование файлов в папке.
|
Новый участник Сообщения: 9 |
Добрый день.
Будьте добры, помогите со скриптом. Есть папка, в ней находится некоторое количество файлов, необходимо последовательно подряд брать заданное равное количество файлов, например по 6 и архивировать их в 7z архив. Название архивов 0,1,2,3 и тд. до окончания файлов. Архивы помещать в созданную в этой же папке новую папку. Ручками приходится архивировать, хотелось бы немного автоматизации. Неравнодушным плюсик к карме. ![]() |
|
Отправлено: 20:44, 12-01-2023 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать @Echo Off
cls
Set "BoxIn=Z:\Есть папка, в ней находится некоторое количество файлов"
Set /A M=6
Set "BoxOut=Arc %Date%"
Set Arc="C:\Program Files\7-Zip\7z.exe" a -sdel
Pushd "%BoxIn%"||(Echo Folder "%BoxIn%" not found &Pause &Exit /B)
2>nul Md "%BoxOut%"
Set /A Narc=0
Set /A i=0
Set "Str="
FOR /F "usebackq delims==" %%f In (`2^>nul Dir /B /A:-D /O:D /T:W`) DO (
Call Set /A i+=1
Call :Out %%i%% "%%f"
)
If Not "%Str%"=="" %Arc% "%BoxOut%\%Narc%.7Z" %Str%
Popd
pause
Exit /B 0
:Out
Set /A MM=%1%%%M%
Set "Str=%Str% %2"
If Not %MM% EQU 0 Exit /B
rem Echo %1 %MM% %2 %Str%
%Arc% "%BoxOut%\%Narc%.7Z" %Str%
Set "Str="
Set /A Narc+=1
Exit /B 0
|
------- Последний раз редактировалось megaloman, 13-01-2023 в 14:40. Отправлено: 10:11, 13-01-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Powershell
$archiver = "C:\Program Files\7-Zip\7z.exe" $sourceFolder = "D:\temp" $backupFolder = $sourceFolder $chunkSize = 5 $files = dir $sourceFolder |? psiscontainer -eq $false for ($c,$s = 0,0; $s -lt $files.Count; $s += $chunkSize) { & $archiver a "$backupFolder\$c.7z" ($files |select -Skip $s -First $chunkSize).fullname $c++ } |
------- Отправлено: 10:58, 13-01-2023 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Друзья, Вы лучшие! Оба варианта сработали. Единственное у батника не срабатывает на кириллический путь, наверно нужно кодировку добавить. Срабатывает только на латиницу. Огромное Вам спасибо, частичка рутины моей теперь будет автоматизирована.
|
Отправлено: 17:56, 13-01-2023 | #4 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать На пробных папках было все нормально, а как натравил на большую папку, вот тут и засада. Архивирует в архивы заданное количество файлов, но проблема, что архивирует их не все строго по порядку, а некоторые перемешивает, не пойму по какому принципу он их пакует.
|
|
Отправлено: 20:46, 13-01-2023 | #5 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать serrrr,
Цитата serrrr:
![]() Цитата:
Cls >nul chcp 1251 если Ваш редактор не работает в 866 кодировке |
||
------- Последний раз редактировалось megaloman, 13-01-2023 в 22:02. Отправлено: 21:56, 13-01-2023 | #6 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 22:11, 13-01-2023 | #7 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста, как сделать, что бы команда dir с ключом /O:N сортировала так же как и системная сортировка? В системе отсортировано 1,2,3 и т.д., а dir сортирует в архивах 1,11,12,13. Как сделать, что бы было по порядку?
|
Отправлено: 22:41, 16-01-2023 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать serrrr, Никак. При алфавитной сортировке 10000<9
|
------- Отправлено: 23:38, 16-01-2023 | #9 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата serrrr:
![]() |
|
------- Отправлено: 08:40, 17-01-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Архивирование и удаление файлов в папке старше n дней | ryoryoryo | Скриптовые языки администрирования Windows | 14 | 09-04-2021 15:19 | |
CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd. | Vasylich | Скриптовые языки администрирования Windows | 30 | 08-04-2016 11:59 | |
2008 - [решено] Архивирование файлов | Tonny_Bennet | Windows Server 2008/2008 R2 | 3 | 16-10-2013 14:38 | |
CMD/BAT - Архивирование файлов | vova_king | Скриптовые языки администрирования Windows | 1 | 10-09-2013 00:46 | |
VBA - Архивирование папки в папке %temp% | Dark_Timur | Программирование и базы данных | 3 | 03-07-2012 13:42 |
|