Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 2

Создать архивы по 100 файлов

18.01.2017, 14:56. Показов 3100. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите реализовать следующую логику на batch.

В каталоге лежит много файлов, предположим 1024, после отработки скрипта в каталоге должны быть созданы 11 архивов с помощью ARJ, содержащие по 100 файлов в каждом и 24 в последнем, с нумерацией архивов вида "ИМЯ_АРХИВА_001.ARJ"... "ИМЯ_АРХИВА_011.ARJ".

Насчет нумерации совсем идей нет.

Добавлено через 6 часов 7 минут
У самого получился вот что получилось, крайне не уверен что это оптимальный вариант, и используется упрощенная нумерация файлов.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
echo off
chcp 1251
 
SetLocal EnableExtensions EnableDelayedExpansion
 
set arcsize=100
set counter=0
set counter100=0
set files=0
 
for /f %%i in ('dir/a-d/b *.txt') do (set /a files+=1)
 
if %files% equ 0 (
    echo Нет файлов для архивации
    goto end
    )
 
set /p arcnum="Введите последний номер архива: "
    
:while
 
set /a arcnum+=1
set /a counter100-=%counter100%
 
for /f %%i in ('dir/a-d/b *.txt') do (
    if !counter! equ %files% (goto wend)
    if !counter100! equ %arcsize% (goto while)
    ARJ32.EXE m "DEFAULT_NAME_%arcnum%.ARJ" %%i > nul
    set /a counter+=1
    set /a counter100+=1
    )
 
:wend
 
echo Последний номер архива: %arcnum%
 
:end
 
set arcnum=
set counter100=
set counter=
set files=
 
pause
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2017, 14:56
Ответы с готовыми решениями:

Создать 100 текстовых файлов
У нас есть bat файл. В него надо прописать алгоритм который будет создавать 100 ( например текстовых файлов в папке C:\Temp2 ) и потом их...

Сжатие файлов в ZIP архивы.
Поскажите, пожалуста, где можно найти удобную библиотеку для сжатия файлов в zip-архив. Нужно, чтобы библиотеку можно было легко перенести...

Как сделать фильтр на архивы? Т.е. вывести ссылки только на архивы в определённой папке.
Всем привет, есть страница которая выводит всё файлы с каталога и ссылки на них,но проблема в том что мне надо чтобы отображались только...

4
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
18.01.2017, 15:48
Цитата Сообщение от nd2kk Посмотреть сообщение
Насчет нумерации совсем идей нет.
Поставьте в цикле счётчик set /a n+=1 пусть считает до 100, а потом обнуляется.

Сам догадался

Добавлено через 4 минуты
Windows Batch file
1
2
3
4
5
6
7
8
echo off
SetLocal EnableDelayedExpansion
 
for /f "delims=" %%i in ('dir/a-d/b *.txt') do (
set /a files+=1
rem команда упаковки
if "!files!"=="100" set files=
)
0
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 2
18.01.2017, 16:30  [ТС]
sov44, речь идет о нумерации файлов архивов, скрипт должен создавать множество архивов по 100 фалов с нумерацией вида 001 002 003 ... 009 010 011 ... 099 100 101 сейчас нумерация выглядит так 1 2 3 4 ... 9 10 11 12
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
18.01.2017, 17:29
nd2kk,
вот пример нужной вам нумерации:
Windows Batch file
1
2
3
4
5
6
@echo off
setlocal enabledelayedexpansion
set "d_out=2"
if not exist "%d_out%" md "%d_out%"
for /f "delims=" %%a in ('dir /a-d /b') do set /a n+=1& set "m=00!n!"& copy "%%a" "%d_out%\!m:~-3!%%~xa"
pause>nul
1
 Аватар для b0gus
741 / 339 / 134
Регистрация: 17.03.2014
Сообщений: 842
18.01.2017, 22:56
Цитата Сообщение от nd2kk Посмотреть сообщение
Насчет нумерации совсем идей нет.
а так?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@echo off&cls
SetLocal EnableExtensions
                :: %src% каталог, где лежат файлы, архивы также упадут в этот каталог
set "src=диск:\путь1\путь2"
if "%src:~-1%" equ "\" call set "src=%%src:~0,-1%%"
 
                :: %mult% мах кол-во файлов в 1-м архиве
set /a "mult=100"
                :: %arj_cnt%-1 мах количество архивов
set /a "arj_cnt=1000"
                :: %arj_name% префикс имени архива
set "arj_name=NAME_ARHIVE"
                :: %arj_cmd% команда для ARJ32
                :: a добавить файлы в архив
                :: m добавить файлы, ежели всё ОК - удалить файлы
set "arj_cmd=a"
 
if exist "%src%\%arj_name%*.arj" (
  echo:в каталоге '%src%' есть архивы по маске '%arj_name%*.arj'
  echo:может получиться непотребное
  echo:здесь можно чё-нить накодить для этого события, а я завершусь с ошибкой
  echo:
  pause
  exit /b 99
)
                                :: приведём %temp% к формату 8.3
 
for %%v in ("%temp%") do set "temp=%%~dpsv"&call set "temp=%%temp:~0,-1%%"
 
                :: %list% очередная порция файлов для упаковки
set "list=%temp%\file_list"
 
                :: на всякий случай переопределим %ARJ_SW%
set "ARJ_SW=-i -w%temp%"
 
>nul 2>nul del %list%
 
SetLocal EnableDelayedExpansion
  for /f "tokens=*" %%v in ('dir /a-d/b "%src%"^|find /i /v ".arj"') do (
    >>%list% (echo %%v)
    set /a cnt+=1
    if !cnt! == %mult% (
      set /a arj_cnt+=1
      call :packer !arj_cnt!||(>con echo:ошибка архивирования & >con pause & exit /b 1)
      set /a cnt=0
      >nul 2>nul del %list%
    )
  )
                :: пакуем остаток 
  if exist %list% (
      set /a arj_cnt+=1
      call :packer !arj_cnt!||(>con echo:ошибка архивирования & >con pause & exit /b 1)
      >nul 2>nul del %list%
  )
exit /b 0
_____________________________________________________________________________
 
:packer
SetLocal DisableDelayedExpansion
  set "t=%1"
  set "t=%t:~-3%"
  pushd %src%
  if exist "%arj_name%_%t%" (
    >con echo:оч.много файлов, кол-во архивов ^> '%arj_cnt%-1'
    >con pause
    exit /b 99
  )
  title '%arj_name%_%t%.arj' пакуем очередную пачку из %mult% файлов
  >con echo:'%arj_name%_%t%.arj' пакуем очередную пачку из %mult% файлов
  >nul arj32 %arj_cmd% -!@ "%arj_name%_%t%.arj" @%list%
  set "rc=%ERRORLEVEL%"
popd
exit /b %rc%
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2017, 22:56
Помогаю со студенческими работами здесь

Распаковка и запаковка файлов в архивы - нужен графический вид
Добрый день! Подскажите пожалуйста, есть два Bat файла @echo off "C:\Program Files\7-Zip\7z" x %cd%\*.* -o%cd%\UnZip -r exit...

Архивирование файлов из каждой папки в архивы с именами этих папок
Всем привет! Подскажите, пожалуйста, как написать bat для архивирования файлов в папках и названием архивов названием папок? Так...

Можно ли заархиваровать группы файлов в самостоятельные архивы с определенным размером?
Есть группа файлов разного размера до 10 мб. Хочется их поместить в самостоятельные архивы размер каждого из которых, которых не превышает...

Создать 100 файлов. Имя каждого файла должно соответствовать его поряд-ковому номеру.
Создать 100 файлов. Имя каждого файла должно соответствовать его поряд-ковому номеру. В каждый из файлов записать его порядковый номер

Создать массив содержащий случайные числа в диапозоне от [-100, 100]
Далее сформировать новый упорядоченный массив по возрастанию исключая из первого массива числа нарушающие порядок


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru