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

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

SkyNezu 28-07-2019 13:02 2881689

Как извлечь только файлы из архивов *.gz без учета папок
 
Добрый день.
Есть несколько архивов.

Архивы имеют вот такую структуру:
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 2881699

Вопрос решил, справился простой командой:
Код:

7z.exe e -oD:\Result\ "D:\archive1.gz"
Но теперь возникла другая проблема.
На сервер ежедневно попадают архивы вида "Test-20190314.gz" где "20190314" это дата формирования файла.
В архиве соответственно содержится файл "Test-20190314". Каждый день такой архив нужно распаковывать, а файл переименовывать просто в "Test.txt". Имя архива и имя файла внутри каждый раз новое.

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

SkyNezu 28-07-2019 15:49 2881714

И это решается просто, вот таким кодом:

Код:

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


Время: 23:23.

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