CMD/BAT - архивы с именем папок

Ответить
Аватара пользователя
fiksikyu

CMD/BAT - архивы с именем папок

Сообщение fiksikyu »

Друзья помогите, сломал всю голову.

Есть папка 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

Re: CMD/BAT - архивы с именем папок

Сообщение Iska »

Как-то так:



Код:

Код: Выделить всё

@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

Re: CMD/BAT - архивы с именем папок

Сообщение alpap »

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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»