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

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

idlazarev_alex@vk 19-08-2014 13:07 2391186

Добавить папку с файлами через 7za
 
Здравствуйте! нужно добавить папку с файлами в архив, папка находится типа: 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 и в ней файл

Заранее спасибо.

Iska 19-08-2014 13:11 2391191

Выполните предварительно:
Код:

cd /d "data/data/fufjf/efif3"
а вместо имени «data.zip» укажите полный путь к архиву.

idlazarev_alex@vk 19-08-2014 13:36 2391203

Цитата:

Цитата Iska
Выполните предварительно: »

данный путь лишь пример, при распаковке будут рандомные пути.. но папка folder обязательно будет, 7za, может её найти и запаковать 100%, только вот как это сделать я не пойму.
Цитата:

Цитата Iska
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

Вот как запаковать также ?

Iska 19-08-2014 14:07 2391228

Цитата:

Цитата idlazarev_alex@vk
при распаковке будут рандомные пути.. »

При какой распаковке? Ранее Вы ничего не упоминали ни о распаковке, ни о «рандомных» путях. Поясните.

idlazarev_alex@vk 19-08-2014 14:11 2391235

Iska, архив распаковывается (логи выше) и далее запаковывается (логи выше), мне нужна команда запаковки.

Iska 19-08-2014 14:17 2391242

Какой архив? Куда и как распаковывается?

idlazarev_alex@vk 19-08-2014 14:24 2391247

Iska, архив *.tar, распаковывается в временную папку, далее в папке 7za ищет папку databases и добавляет её в новый архив zip.

Iska 19-08-2014 14:43 2391255

idlazarev_alex@vk, вот я и хочу увидеть архив и команду на извлечение.

idlazarev_alex@vk 19-08-2014 14:55 2391267

Вложений: 1
Команда на извлечение:
Код:

7za.exe X -y *.tar -o"temp" >> log
Архив взят в качестве примера (будет другой)

IT Shepherd 19-08-2014 14:57 2391268

Цитата:

Цитата idlazarev_alex@vk
7za ищет папку databases и добавляет её в новый архив zip. »

Если я правильно понял, то
Код:

7za.exe a archive.zip -r database\

idlazarev_alex@vk 19-08-2014 15:15 2391272

Цитата:

Цитата IT Shepherd
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


Iska 19-08-2014 15:50 2391297

Цитата:

Цитата idlazarev_alex@vk
Команда на извлечение: »

Результат:
Код:

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 2391314

Iska, та надпись была для примера, будут же различные пути к папке допустим database, мне она и нужна

Iska 19-08-2014 16:24 2391322

Цитата:

Цитата idlazarev_alex@vk
Iska, та надпись была для примера, »

idlazarev_alex@vk, не нужно «для примера». Я задал вполне конкретные вопросы и предполагаю получить на них конкретные ответы, чтобы воспроизвести у себя Вашу ситуацию.

idlazarev_alex@vk 19-08-2014 16:56 2391345

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

Iska 19-08-2014 18:10 2391382

idlazarev_alex@vk, я хочу увидеть архив. Меня не интересуют ни «для примера», ни «кусок лога из программы», ни «логи сторонней программы». Меня интересует архив. Тот самый архив, в котором есть указанная папка, которая извлекается «в рандомную папку».

Цитата:

Цитата idlazarev_alex@vk
т.е в каждом архиве разный путь к database »

Давайте образцы нескольких архивов. Я хочу это видеть.

idlazarev_alex@vk 19-08-2014 18:40 2391397

Вложений: 3
Iska, приложил 3 архива

Iska 20-08-2014 06:58 2391560

Ну, вот видите, как всё замечательно. И архивы теперь корректно распаковываются. И вместо невнятного «…типа: 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 ==========================================================================



Время: 20:53.

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