Войти

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


fiksikyu
16-02-2021, 22:10
Друзья помогите, сломал всю голову.
Есть папка 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
Как-то так:
@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
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




© OSzone.net 2001-2012