Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
abuabu
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 2
1

Архивация по 50 файлов

13.07.2012, 18:37. Просмотров 1833. Ответов 5
Метки нет (Все метки)

Есть одна папка в которой n картинок.
Я вбрасываю в нее и жму name.bat
Скрипт создает внутри name1 name2 .. name5 и в каждой по 50 файлов.
Затем name1 name2 .. name5 архивирует в .zip

Если проще:
Есть одна папка в которой n картинок.
Скрипт архивирует по 50 файлов.
На выходе получается img01.zip img02.zip .. img05.zip
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2012, 18:37
Ответы с готовыми решениями:

Ежедневная архивация файлов
Всем привет. Возникла надобность создавать архив ежедневно последних файлов в один о тот же...

Архивация текстовых файлов
Привет всем!!! У меня такая проблема на работе ... есть папка и там под папки и там в папках...

Архивация файлов по маске
Добрый день! Прошу сразу сильно не пинать ногами ибо пишу первое сообщение на форум. Поиском ответа...

Ежемесячная архивация файлов
Всем привет! Помоги плиз со следующей проблемой, я скачиваю файлы с сервера и сразу архивирую их...

Архивация измененных/добавленных файлов
Здравствуйте. Помогите пожалуйста написать батник, который будет архивировать только измененные и...

5
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
14.07.2012, 03:49 2
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
setlocal enabledelayedexpansion
set arhpath="C:\Program Files (x86)\7-Zip"
set /a maxfiles=50
set /a files=%maxfiles%
for /f %%a in ('dir /b /a:-d') do (
  if !files!==%maxfiles% (
    set /a n+=1
    mkdir name!n!
    set /a files=0
  )
  copy "%%a" name!n!\
  set /a files+=1
)
for /f %%a in ('dir /b /a:d name*') do (
  set folder=%%a
  set /a n=!folder:~4!
  if !n! lss 10 set n=0!n!
  %arhpath%\7z a -tzip -mx1 img!n!.zip %%a>nul
)
Для работы нужна установленная программа-архиватор 7-zip (freeware)
А также указание в переменной arhpath пути ее установки. Если это невозможно, можете воспользоваться
чтением реестрового ключа
Bash
1
For /F "UseBackQ Tokens=2*" %%A In (`Reg Query "HKCU\Software\7-Zip"^|Find /I "Path"`) do set arhpath="%%B"

Степень сжатия устанавливается ключем -m
Справку можно посмотреть здесь.

P.S. Строка № 17 всегда должна содержать количество букв в слове "name", если планируете его поменять.
1
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
14.07.2012, 14:16 3
альтернативный вариант
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
setlocal enabledelayedexpansion
set maxfiles=50
set dr="c:\перевалка"
set m=1
set arhpath="c:\Program Files\7-Zip"
for /f "delims=" %%a in ('dir "%dr%" /b/a-d') do (
   if "!n!"=="%maxfiles%" (set n=& set /a m +=1)
   if not exist "%~dp0name!m!" md "%~dp0name!m!"
   copy "%dr%\%%a" "%~dp0name!m!" >nul
   set /a n +=1
)
for /f "delims=" %%b in ('dir "%~dp0" /b/ad') do (
%arhpath%\7z a -tzip -mx1 %%b.zip %%b >nul
echo del /q %%b
)
pause
1
abuabu
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 2
15.07.2012, 11:33 4
Большое спасибо Dragokas, sov44, можно ли сделать так, чтобы имя папки в архиве было одинаковое во всех архивах?

Например namefolder без name1 name2 .. name4
0
Миниатюры
Архивация по 50 файлов  
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
15.07.2012, 13:02 5
чтобы имя папки в архиве было одинаковое во всех архивах
abuabu, пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
setlocal enabledelayedexpansion
set maxfiles=50
set dr="c:\перевалка"
set m=1
set arhpath="c:\Program Files\7-Zip"
for /f "delims=" %%a in ('dir "%dr%" /b/a-d') do (
   if "!n!"=="%maxfiles%" (set n=& set /a m +=1)
   if not exist "%~dp0name!m!" md "%~dp0name!m!"
   copy "%dr%\%%a" "%~dp0name!m!" >nul
   set /a n +=1
)
for /f "delims=" %%b in ('dir "%~dp0" /b/ad') do (
ren %%b papka
%arhpath%\7z a -tzip %%b.zip papka >nul
rd /s/q papka
)
1
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
15.07.2012, 16:18 6
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
setlocal enabledelayedexpansion
set arhpath="C:\Program Files (x86)\7-Zip"
set Finside=namefolder
set /a maxfiles=2
set /a files=%maxfiles%
for /f %%a in ('dir /b /a:-d') do (
  if !files!==%maxfiles% (
    set /a n+=1
    mkdir name!n!
    set /a files=0
  )
  copy "%%a" name!n!\
  set /a files+=1
)
for /f %%a in ('dir /b /a:d name*') do (
  set folder=%%a
  set /a n=!folder:~4!
  if !n! lss 10 set n=0!n!
  ren %%a %Finside%
  %arhpath%\7z a -tzip -mx1 img!n!.zip %Finside%>nul
  ren %Finside% %%a
)
1
15.07.2012, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2012, 16:18

Архивация файлов с использованием 7-Zip
Доброго времени суток всем членам форума. Не могу разобраться в командах для 7zip. Задача такая:...

Переименование и архивация файлов по части имени
Здравствуйте! Помогите со следующей задачей. Есть папка в которой находятся множество файлов с...

Архивация выбранных папок+файлов в текущей директории
добрый день, понадобилось собирать zip-архив с нужными папками в текущей директории с помощью...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru