Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Последовательное архивирование файлов в папке.

Ответить
Настройки темы
CMD/BAT - Последовательное архивирование файлов в папке.

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.
Будьте добры, помогите со скриптом.
Есть папка, в ней находится некоторое количество файлов, необходимо последовательно подряд брать заданное равное количество файлов, например по 6 и архивировать их в 7z архив. Название архивов 0,1,2,3 и тд. до окончания файлов. Архивы помещать в созданную в этой же папке новую папку.
Ручками приходится архивировать, хотелось бы немного автоматизации. Неравнодушным плюсик к карме.

Отправлено: 20:44, 12-01-2023

 

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить 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
Если после архивации не надо удалять исходные файлы, уберите ключ -sdel

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 13-01-2023 в 14:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:11, 13-01-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить 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++
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:58, 13-01-2023 | #3


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Друзья, Вы лучшие! Оба варианта сработали. Единственное у батника не срабатывает на кириллический путь, наверно нужно кодировку добавить. Срабатывает только на латиницу. Огромное Вам спасибо, частичка рутины моей теперь будет автоматизирована.

Отправлено: 17:56, 13-01-2023 | #4


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


На пробных папках было все нормально, а как натравил на большую папку, вот тут и засада. Архивирует в архивы заданное количество файлов, но проблема, что архивирует их не все строго по порядку, а некоторые перемешивает, не пойму по какому принципу он их пакует.

Отправлено: 20:46, 13-01-2023 | #5


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


serrrr,
Цитата serrrr:
некоторые перемешивает, не пойму по какому принципу он их пакует
а Вы на доводили до общего сведения Ваши принципы. Я определил порядок по дате последнего изменения - чем меньше номер архива, тем более старые там файлы. Не нравится – никто не ограничивает Вашей свободы изменить ключи команды dir
Цитата:
наверно нужно кодировку добавить
по умолчанию код cmd должен сохраняться в 866 кодировке, вам, наверное, надо после
Cls
>nul chcp 1251
если Ваш редактор не работает в 866 кодировке

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 13-01-2023 в 22:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:56, 13-01-2023 | #6


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
если Ваш редактор не работает в 866 кодировке »
В Notepad++ сохранил в 866 кодировке, стало работать с кириллическими путями. Спасибо.

Отправлено: 22:11, 13-01-2023 | #7


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, как сделать, что бы команда dir с ключом /O:N сортировала так же как и системная сортировка? В системе отсортировано 1,2,3 и т.д., а dir сортирует в архивах 1,11,12,13. Как сделать, что бы было по порядку?

Отправлено: 22:41, 16-01-2023 | #8


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


serrrr, Никак. При алфавитной сортировке 10000<9

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 23:38, 16-01-2023 | #9


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата serrrr:
Как сделать, что бы было по порядку? »
Изучать powershell, в нем невозможное - возможно!

-------
scio me nihil scire. Ѫ


Отправлено: 08:40, 17-01-2023 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Последовательное архивирование файлов в папке.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход