PDA

Показать полную графическую версию : [решено] Как извлечь только файлы из архивов *.gz без учета папок


SkyNezu
28-07-2019, 13:02
Добрый день.
Есть несколько архивов.

Архивы имеют вот такую структуру:
D:\archive1.gz\file1
D:\archive2.gz\file2
D:\archive3.gz\folder1\folder2\file3
D:\archive4.gz\folder1\folder2\file4

Нужен BAT-файл, чтобы извлечь в отдельную папку только файлы без папок, чтобы получилось в итоге:
D:\Result\file1
D:\Result\file2
D:\Result\file3
D:\Result\file4

Кто может помочь написать такой bat-файл? Из архиваторов доступны только winrar или 7zip.

SkyNezu
28-07-2019, 14:00
Вопрос решил, справился простой командой:
7z.exe e -oD:\Result\ "D:\archive1.gz"

Но теперь возникла другая проблема.
На сервер ежедневно попадают архивы вида "Test-20190314.gz" где "20190314" это дата формирования файла.
В архиве соответственно содержится файл "Test-20190314". Каждый день такой архив нужно распаковывать, а файл переименовывать просто в "Test.txt". Имя архива и имя файла внутри каждый раз новое.

Как сделать так, чтобы код в бат-файле автоматически распознавал архив с новой датой и распаковывал его? И как сделать переименование файла у которого каждый раз новое имя?

SkyNezu
28-07-2019, 15:49
И это решается просто, вот таким кодом:


@echo.
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"


Тогда в коде просто указываем

7z.exe e -oD:\Result "D:\test-%YYYY%%MM%%DD%.gz"




© OSzone.net 2001-2012