Войти

Показать полную графическую версию : Создание архива из подкаталогов


cezar_bd
26-11-2012, 18:58
День Добрый. Имеется основной каталог test в нем test1, test2, test3 ..... test15, в каждом из них есть каталоги 1,2,3,4,5,6 (тоесть они повторяются в каждом из t01....t15), необходимо каталоги 1,2,3,4,5,6( со всеми файлами) скоприровать следующим образом
значит что есть
t01 /1
/2
/3
/4
/5
/6
/7
/8
/9

t02 /1
/2
/3
/4
/5
/6
/7
/8
/9

..............

t15 /1
/2
/3
/4
/5
/6
/7
/8
/9
необходимо получить в итоге следующую структуры
1 /t01/01
/t02/01
/t03/01
...................
/t15/01

..............
2 /t01/02
/t02/02
/t03/02
...................
/t15/02
................
................
3 /t01/03
/t02/03
/t03/03
...................
/t15/03
и потом засунуть
каталоги 1,2,3,4 -15 упаковать в архив каждый отдельно 1.7z 2.7z 3.7z......

Iska
26-11-2012, 23:24
Ага. Роман-то с продолжением, оказывается. Понятней, правда, не стало.

megaloman
27-11-2012, 18:41
@Echo Off

Set Dir1=D:\Delete\Основной каталог
Set Dir2=D:\Delete\Следующий образ
Set Zip=D:\Delete\7zip

rem Set ZipExe="C:\Program Files\WinRar\WinRar.exe" a -r -ibck
Set ZipExe="C:\Program Files\7-Zip\7z.exe" a -r

Set Dir11="Test1" "Test2" "Test3" "Test4" "Test5" "Test6" "Test7" "Test8" "Test9" "Test10" "Test11" "Test12" "Test13" "Test14" "Test15"

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

md "%Zip%" 2>nul
Cd /D "%Zip%"

For /L %%n IN (1,1,9) DO (
Set /A NN=%%n+100
Set NN=!NN:~1,2!

For %%d IN (%Dir11%) DO (

rem md "%Dir1%\%%~d\%%n" 2>nul
rem Echo %Dir1% %%d %%n >"%Dir1%\%%~d\%%n\%time:~6,5% %%~d_!NN!.txt"

If Exist "%Dir1%\%%~d\%%n\*.*" (
md "%Dir2%\%%n\%%~d\!NN!" >nul 2>nul
Copy "%Dir1%\%%~d\%%n\*.*" "%Dir2%\%%n\%%~d\!NN!\" >nul 2>nul
)
)
%ZipExe% %%n "%Dir2%\%%n\*.*"
rem rd "%Dir2%\%%n" /s /q
)
Вот решение. В нём закомментировано

rem Set ZipExe="C:\Program Files\WinRar\WinRar.exe" a -r -ibck
то есть вариант с вызовом упаковщика winrar

rem md "%Dir1%\%%~d\%%n" 2>nul
rem Echo %Dir1% %%d %%n >"%Dir1%\%%~d\%%n\%time:~6,5% %%~d_!NN!.txt"
Создание тестовых исходных папок с тестовыми исходными файлами - ручками такую структуру мне было делать лень

rem rd "%Dir2%\%%n" /s /q
здесь я привёл пример, как можно убить подпапку по мере её упаковки.
можно ниже последней скобоки вообще написать

rd "%Dir2%" /s /q

если нет смысла хранить файлы аж в 3 экземплярах, оставляем только упакованные.

cezar_bd
28-11-2012, 10:13
спасибо большое. Самое оно.




© OSzone.net 2001-2012