Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Создание архива из подкаталогов (http://forum.oszone.net/showthread.php?t=247771)

cezar_bd 26-11-2012 18:58 2033382

Создание архива из подкаталогов
 
День Добрый. Имеется основной каталог 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 2033530

Ага. Роман-то с продолжением, оказывается. Понятней, правда, не стало.

megaloman 27-11-2012 18:41 2034082

Код:

@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 2034480

спасибо большое. Самое оно.


Время: 03:40.

Время: 03:40.
© OSzone.net 2001-