Показать полную графическую версию : [решено] Добавить папку с файлами через 7za
idlazarev_alex@vk
19-08-2014, 13:07
Здравствуйте! нужно добавить папку с файлами в архив, папка находится типа: data/data/fufjf/efif3/folder/*.* , надо добавить именно папку folder и все файлы в ней, пробовал
7za.exe a -tzip -mm=Deflate -mx=0 -mtc=off -r data.zip data/../folder/*.*
Но ничего не вышло
7za.exe a -tzip -mm=Deflate -mx=0 -mtc=off -r data.zip file.txt
Так добавляет file.txt с полными путями, а надо только папку folder и в ней файл
Заранее спасибо.
Выполните предварительно:
cd /d "data/data/fufjf/efif3"
а вместо имени «data.zip» укажите полный путь к архиву.
idlazarev_alex@vk
19-08-2014, 13:36
Выполните предварительно: »
данный путь лишь пример, при распаковке будут рандомные пути.. но папка folder обязательно будет, 7za, может её найти и запаковать 100%, только вот как это сделать я не пойму.
cd /d "data/data/fufjf/efif3" »
а можно например заменить середину до конечной точки например: cd /d "data/././folder" ?
Iska, вот кусок лога из программы, исходников нет, но надо сделать примерно так:
Arguments = x -y -o"C:\out\Temp" "C:\input\Temp\com.git-20140815-192436.tar"
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Processing archive: C:\input\Temp\com.git-20140815-192436.tar
Extracting data\data\com.git\.
Extracting data\data\com.git\.\shared
Extracting data\data\com.git\.\shared\com.git_preferences.xml
Extracting data\data\com.git\.\files
Extracting data\data\com.git\.\files\Client
Extracting data\data\com.git\.\files\INSTALLATION
Extracting data\data\com.git\.\databases
Extracting data\data\com.git\.\databases\billing.db
Extracting data\data\com.git\.\databases\billing.db-journal
Extracting data\data\.external.com.git\.
Extracting data\data\.external.com.git\.\cache
Everything is Ok
Folders: 6
Files: 5
Size: 34489
Compressed: 43008
tempFolders.Length > 0
realFoldLength = 1
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Creating archive C:\out\data.zip
Compressing databases\billing.db
Compressing databases\billing.db-journal
Everything is Ok
Вот в этом логе программа архивирует папку с файлами в архив:
tempFolders.Length > 0
realFoldLength = 1
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Creating archive C:\out\data.zip
Compressing databases\billing.db
Compressing databases\billing.db-journal
Everything is Ok
Вот как запаковать также ?
при распаковке будут рандомные пути.. »
При какой распаковке? Ранее Вы ничего не упоминали ни о распаковке, ни о «рандомных» путях. Поясните.
idlazarev_alex@vk
19-08-2014, 14:11
Iska, архив распаковывается (логи выше) и далее запаковывается (логи выше), мне нужна команда запаковки.
Какой архив? Куда и как распаковывается?
idlazarev_alex@vk
19-08-2014, 14:24
Iska, архив *.tar, распаковывается в временную папку, далее в папке 7za ищет папку databases и добавляет её в новый архив zip.
idlazarev_alex@vk, вот я и хочу увидеть архив и команду на извлечение.
idlazarev_alex@vk
19-08-2014, 14:55
Команда на извлечение:
7za.exe X -y *.tar -o"temp" >> log
Архив взят в качестве примера (будет другой)
IT Shepherd
19-08-2014, 14:57
7za ищет папку databases и добавляет её в новый архив zip. »
Если я правильно понял, то
7za.exe a archive.zip -r database\
idlazarev_alex@vk
19-08-2014, 15:15
7za.exe a archive.zip -r database\ »
Странно, но создаётся пустой архив
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Creating archive data.zip
Everything is Ok
Команда на извлечение: »
Результат:
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Error:
Incorrect command line
И я не вижу в приложенном архиве папку «folder».
idlazarev_alex@vk
19-08-2014, 16:16
Iska, та надпись была для примера, будут же различные пути к папке допустим database, мне она и нужна
Iska, та надпись была для примера, »
idlazarev_alex@vk, не нужно «для примера». Я задал вполне конкретные вопросы и предполагаю получить на них конкретные ответы, чтобы воспроизвести у себя Вашу ситуацию.
idlazarev_alex@vk
19-08-2014, 16:56
Iska, ок:
Полный код распаковки:
7za.exe E -y *.tar.gz >> log
md temp\
7za.exe X -y *.tar -o"temp" >> log
Логи сторонней программы:
Arguments = x -y -o"C:\Program Files (x86)\ProgrammingMachines\SaveToGame\Temp" "C:\Program Files (x86)\ProgrammingMachines\SaveToGame\Temp\com.silk_paints-20140815-192436.tar"
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Processing archive: C:\Program Files (x86)\ProgrammingMachines\SaveToGame\Temp\com.silk_paints-20140815-192436.tar
Extracting data\data\com.silk_paints\.
Extracting data\data\com.silk_paints\.\shared_prefs
Extracting data\data\com.silk_paints\.\shared_prefs\com.silk_paints_preferences.xml
Extracting data\data\com.silk_paints\.\files
Extracting data\data\com.silk_paints\.\files\gaClientId
Extracting data\data\com.silk_paints\.\files\INSTALLATION
Extracting data\data\com.silk_paints\.\databases
Extracting data\data\com.silk_paints\.\databases\billing.db
Extracting data\data\com.silk_paints\.\databases\billing.db-journal
Extracting data\data\.external.com.silk_paints\.
Extracting data\data\.external.com.silk_paints\.\cache
Everything is Ok
Folders: 6
Files: 5
Size: 34489
Compressed: 43008
tempFolders.Length > 0
realFoldLength = 1
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Creating archive C:\Program Files (x86)\ProgrammingMachines\SaveToGame\data.zip
Compressing databases\billing.db
Compressing databases\billing.db-journal
Everything is Ok
Нужно запаковать папку database и все файлы в ней в отдельный data.zip архив через консоль. Архив тот же.
Путь к папке database будет постоянно меняться! т.е в каждом архиве разный путь к database
idlazarev_alex@vk, я хочу увидеть архив. Меня не интересуют ни «для примера», ни «кусок лога из программы», ни «логи сторонней программы». Меня интересует архив. Тот самый архив, в котором есть указанная папка, которая извлекается «в рандомную папку».
т.е в каждом архиве разный путь к database »
Давайте образцы нескольких архивов. Я хочу это видеть.
idlazarev_alex@vk
19-08-2014, 18:40
Iska, приложил 3 архива
Ну, вот видите, как всё замечательно. И архивы теперь корректно распаковываются. И вместо невнятного «…типа: data/data/fufjf/efif3/folder/*.*» брюки превращаются мы видим вполне конкретные:
\data\data\com.ligq.ikey\.\databases
\data\data\com.quickoffice.android\.\databases
\data\data\com.silk_paints\.\databases
И никаких «рандомных путей».
Итак, если я правильно понял суть Ваших сумбурных описаний, Вам надо извлечь из архива вида «*.tar.gz» содержимое папки «\data\data\XXXX\.\databases\*.*» и упаковать затем это извлечённое содержимое в новый архив, включая саму папку «databases», так? В предположении перечисленного верным — пробуйте:
@echo off
setlocal enableextensions enabledelayedexpansion
call :GetTemporaryName
md "%TemporaryName%"
for %%i in (*.tar.gz) do (
"%ProgramFiles%\7-ZipA\7za.exe" e -o"%TemporaryName%" "%%~i"
set sTar=%%~ni
set sPath2Databases=%TemporaryName%\Root
if not exist "!sPath2Databases!" md "!sPath2Databases!"
if not exist "!sPath2Databases!\databases" md "!sPath2Databases!\databases"
"%ProgramFiles%\7-ZipA\7za.exe" e -r -o"!sPath2Databases!\databases" "%TemporaryName%\!sTar!" "*\databases\*"
"%ProgramFiles%\7-ZipA\7za.exe" a -r -t7z "%%~i.7z" "!sPath2Databases!\*"
del /f /q "!sPath2Databases!\databases\*.*"
)
rd /q /s "%TemporaryName%"
endlocal
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
setlocal enableextensions enabledelayedexpansion
:NextName
set sTempName=%temp%\temp%random%.tmp
if exist "%sTempName%" goto :NextName
set sProcName=%~0
endlocal & set %sProcName:~4%=%sTempName%
exit /b 0
rem ==========================================================================
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.