Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

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


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

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


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

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

 

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

fascinating rhythm


Moderator


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

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


Типа, CMD:
Код: Выделить весь код
powershell -command "dir |sort {[int]($_.basename)}"

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

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

Отправлено: 09:27, 17-01-2023 | #11



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

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


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


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

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


Цитата DJ Mogarych:
powershell -command "dir |sort {[int]($_.basename)}" »
Подскажите пожалуйста, куда нужно вставить этот код в этот скрипт, что бы он сортировал правильно?
Код: Выделить весь код
$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++
}

Отправлено: 11:16, 17-01-2023 | #12


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

fascinating rhythm


Moderator


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

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


Что именно нужно сортировать? Исходные файлы или что?

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


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


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


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

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


Цитата DJ Mogarych:
Что именно нужно сортировать? Исходные файлы или что? »
Нужно что бы файлы в архивы запаковывались в той же последовательности, как когда их сортирует виндовс по названию. Т. е. в первом архиве должны быть файлы с номером фото1, фото2,фото3,фото4 и т.д. А сейчас там например фото1, фото11, фото12, фото13. Нужна правильная сортировка по наименованию, когда в названии присутствуют числа, при запаковке в архивы.

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


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

fascinating rhythm


Moderator


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

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


Исходные файлы, понятно.
Код: Выделить весь код
$files = dir $sourceFolder |? psiscontainer -eq $false |sort {[int]($_.basename -replace '\D')}

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

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

Отправлено: 16:33, 17-01-2023 | #15


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата DJ Mogarych:
sort {[int]($_.basename -replace '\D')} »
Тут бы расширить условия сортировки, потому как если в файлах с разными названиям будет присутствовать цифровая часть, то отсортируются они не совсем верно по литеральной составляющей...
В общем, лучше бы так:
Код: Выделить весь код
$files = dir $sourceFolder -file|sort{$_.name -replace '\d'},{[int]($_.name -replace '\D')}

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

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

Отправлено: 17:44, 17-01-2023 | #16


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


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

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


Большое спасибо!

Отправлено: 18:26, 17-01-2023 | #17


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


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

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


Цитата YuS_2:
$files = dir $sourceFolder -file|sort{$_.name -replace '\d'},{[int]($_.name -replace '\D')} »
изменил на этот код, но стали появляться такие ошибки. https://sun9-north.userapi.com/sun9-...=95&type=album

Отправлено: 21:58, 18-01-2023 | #18


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата serrrr:
стали появляться такие ошибки. »
замените [int] на [int64] или [bigint]

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

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

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



Компьютерный форум 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




 
Переход