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

fiksikyu 16-02-2021 22:10 2950368

архивы с именем папок
 
Друзья помогите, сломал всю голову.
Есть папка C:\TEST\OUT\ внутри неё появляются папки допустим p0001 p0002 p0003 и тд. до p0099
в каждой папке есть файлы *.XML (от 1 до 99)
нужно в директорию C:\TEST\IN\ создать архивы ARJ c файлами из каждой подпапки с именем архива как у подпапки (только файлы без папок)

ну или вопрос как поймать переменную имени подпапки?

дано
C:\TEST\OUT\p0001\01.xml 02.xml 03.xml 04.xml
C:\TEST\OUT\p0002\05.xml 06.xml 07.xml 08.xml
C:\TEST\OUT\p0003\09.xml 10.xml 11.xml 12.xml

надо
C:\TEST\IN\p0001.ARJ
C:\TEST\IN\p0002.ARJ
C:\TEST\IN\p0003.ARJ

Iska 16-02-2021 23:19 2950382

Как-то так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\test\OUT

pushd "%sSourceFolder%" && (
        for /f "usebackq delims=" %%i in (
                `2^>nul dir /a:d /o:n /b "p00??." ^| findstr.exe /b /e /r /c:"p00[0-9][0-9]"`
        ) do (
                echo [%%~i]
                pushd "%%~i" && (
                        "C:\ARJ32\ARJ32.EXE" a "C:\TEST\IN\%%~i.ARJ" ""??.xml""
                        popd
                ) || (
                        echo Can't set current directory to [%%~i]
                )
        )
        popd
) || (
        echo Can't find sorce folder [%sSourceFolder%].
        exit /b 1
)

endlocal
exit /b 0


alpap 17-02-2021 01:50 2950394

fiksikyu,
а обязательно ARJ, если бы 7z (zip), то и одной строчки достаточно:
Код:

@echo off
set "d1=C:\TEST\OUT"
set "d2=C:\TEST\IN"

for /f "delims=" %%a in ('dir /ad/b/s "%d1%\p0*"') do 7z a "%d2%\%%~nxa.7z" "%%a\*"
pause



Время: 23:39.

Время: 23:39.
© OSzone.net 2001-