CMD/BAT - [решено] Как извлечь только файлы из архивов *.gz без учета папок

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

CMD/BAT - [решено] Как извлечь только файлы из архивов *.gz без учета папок

Сообщение SkyNezu »

Добрый день.

Есть несколько архивов.



Архивы имеют вот такую структуру:

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

Re: CMD/BAT - [решено] Как извлечь только файлы из архивов *.gz без учета папок

Сообщение SkyNezu »

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



Код:

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

7z.exe e -oD:\Result\ "D:\archive1.gz"

Но теперь возникла другая проблема.

На сервер ежедневно попадают архивы вида "Test-20190314.gz" где "20190314" это дата формирования файла.

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



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

Re: CMD/BAT - [решено] Как извлечь только файлы из архивов *.gz без учета папок

Сообщение SkyNezu »

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





Код:

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

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

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