Wie kann ich eine.tar entpacken?gz in einem Schritt (mit 7-Zip)?

Ich verwende 7-Zip unter Windows XP und wann immer ich ein .Teer.gz-Datei Ich brauche zwei Schritte, um die Datei(en) vollständig zu extrahieren.

  1. Ich klicke mit der rechten Maustaste auf die Datei example.tar.gz und wähle 7-Zip --> Hier extrahieren aus dem Kontextmenü.
  2. Ich nehme dann die resultierende example.tar Datei und klicke erneut mit der rechten Maustaste und wähle 7-Zip -> Hier extrahieren aus dem Kontextmenü.

Gibt es einen Weg durch das Kontextmenü, dies in einem Schritt zu tun?

Author: Steven Penny, 2009-12-07

7 answers

Nicht wirklich. Ein .Teer.gz oder .tgz-Datei ist wirklich zwei Formate: .tar ist das Archiv, und .gz ist die Kompression. Der erste Schritt wird also dekomprimiert und der zweite Schritt extrahiert das Archiv.

Um alles in einem Schritt zu tun, benötigen Sie das Programm tar. Cygwin schließt dies ein.

tar xzvf foobaz.tar.gz

; x = eXtract 
; z = filter through gZip
; v = be Verbose (show activity)
; f = filename

Sie können es auch "in einem Schritt" tun, indem Sie die Datei in der 7-Zip-GUI öffnen: Öffnen Sie die Datei .tar.gz, doppelklicken Sie auf die enthaltene Datei .tar und extrahieren Sie diese Dateien an Ihren Speicherort von Wahl.

Es gibt eine lange Laufenden thread hier Leute Fragen/voting für die ein-Schritt Verarbeitung von tgz-und bz2-Dateien. Die bisherige fehlende Aktion zeigt an, dass dies erst geschehen wird, wenn jemand einen sinnvollen Beitrag leistet (Code, Geld, etwas).

 49
Author: quack quixote,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-12-02 01:35:15

Alte Frage, aber ich habe heute damit zu kämpfen, also hier ist mein 2c. The 7zip commandline tool "7z.exe" (Ich habe v9. 22 installiert) kann in stdout schreiben und von stdin lesen, sodass Sie mit einer Pipe auf die TAR-Zwischendatei verzichten können:

7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"

Wobei:

x     = Extract with full paths command
-so   = write to stdout switch
-si   = read from stdin switch
-aoa  = Overwrite all existing files without prompt.
-ttar = Treat the stdin byte stream as a TAR file
-o    = output directory

Siehe die Hilfedatei (7-zip.chm) im Installationsverzeichnis für weitere Informationen zu den Befehlszeilenbefehlen und Switches.

Sie können einen Kontextmenüeintrag für erstellen .Teer.gz/.tgz-Dateien, die den obigen Befehl mit aufrufen regedit oder ein Drittanbieter-Tool wie stexbar.

 30
Author: user2856,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-06-07 23:37:48

Ab 7-zip 9.04 gibt es eine Befehlszeilenoption, um die kombinierte Extraktion durchzuführen, ohne Zwischenspeicher für die einfache .tar - Datei zu verwenden:

7z x -tgzip -so theinputfile.tgz | 7z x -si -ttar

-tgzip wird benötigt, wenn die Eingabedatei .tgz anstelle von .tar.gz.

 12
Author: Joachim Sauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-01-07 20:23:00

Sie verwenden Windows XP, daher sollten Sie Windows Scripting Host standardmäßig installiert haben. Abgesehen davon ist hier ein WSH JScript-Skript, um das zu tun, was Sie brauchen. Kopieren Sie einfach den Code in einen Dateinamen xtract.bat oder etwas in dieser Richtung (Kann was auch immer sein, solange es die Erweiterung .bat hat) und run:

xtract.bat example.tar.gz

Standardmäßig überprüft das Skript den Ordner des Skripts sowie die Umgebungsvariable PATH Ihres Systems auf 7z.exe. Wenn Sie ändern möchten, wie es aussieht zum Beispiel können Sie die Variable SevenZipExe oben im Skript in den gewünschten Namen der ausführbaren Datei ändern. (Zum Beispiel, 7za.exe oder 7z-real.exe) Sie können auch ein Standardverzeichnis für die ausführbare Datei festlegen, indem Sie SevenZipDir ändern. Wenn also 7z.exe bei C:\Windows\system32\7z.exe ist, würden Sie Folgendes setzen:

var SevenZipDir = "C:\\Windows\\system32";

Wie auch immer, hier ist das Skript:

@set @junk=1 /* vim:set ft=javascript:
@echo off
cscript //nologo //e:jscript "%~dpn0.bat" %*
goto :eof
*/
/* Settings */
var SevenZipDir = undefined;
var SevenZipExe = "7z.exe";
var ArchiveExts = ["zip", "tar", "gz", "bzip", "bz", "tgz", "z", "7z", "bz2", "rar"]

/* Multi-use instances */
var WSH = new ActiveXObject("WScript.Shell");
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var __file__ = WScript.ScriptFullName;
var __dir__ = FSO.GetParentFolderName(__file__);
var PWD = WSH.CurrentDirectory;

/* Prototypes */
(function(obj) {
    obj.has = function object_has(key) {
        return defined(this[key]);
    };
    return obj;
})(this.Object.prototype);

(function(str) {
    str.trim = function str_trim() {
        return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    };
})(this.String.prototype);

(function(arr) {
    arr.contains = function arr_contains(needle) {
        for (var i in this) {
            if (this[i] == needle) {
                return true;
            }
        }
        return false;
    }
})(this.Array.prototype);

/* Utility functions */
function defined(obj)
{
    return typeof(obj) != "undefined";
}

function emptyStr(obj)
{
    return !(defined(obj) && String(obj).length);
}

/* WSH-specific Utility Functions */
function echo()
{
    if(!arguments.length) return;
    var msg = "";
    for (var n = 0; n < arguments.length; n++) {
        msg += arguments[n];
        msg += " ";
    }
    if(!emptyStr(msg))
        WScript.Echo(msg);
}

function fatal(msg)
{
    echo("Fatal Error:", msg);
    WScript.Quit(1);
}

function findExecutable()
{
    // This function searches the directories in;
    // the PATH array for the specified file name;
    var dirTest = emptyStr(SevenZipDir) ? __dir__ : SevenZipDir;
    var exec = SevenZipExe;
    var strTestPath = FSO.BuildPath(dirTest, exec);
    if (FSO.FileExists(strTestPath))
        return FSO.GetAbsolutePathName(strTestPath);

    var arrPath = String(
            dirTest + ";" + 
            WSH.ExpandEnvironmentStrings("%PATH%")
        ).split(";");

    for(var i in arrPath) {
        // Skip empty directory values, caused by the PATH;
        // variable being terminated with a semicolon;
        if (arrPath[i] == "")
            continue;

        // Build a fully qualified path of the file to test for;
        strTestPath = FSO.BuildPath(arrPath[i], exec);

        // Check if (that file exists;
        if (FSO.FileExists(strTestPath))
            return FSO.GetAbsolutePathName(strTestPath);
    }
    return "";
}

function readall(oExec)
{
    if (!oExec.StdOut.AtEndOfStream)
      return oExec.StdOut.ReadAll();

    if (!oExec.StdErr.AtEndOfStream)
      return oExec.StdErr.ReadAll();

    return -1;
}

function xtract(exec, archive)
{
    var splitExt = /^(.+)\.(\w+)$/;
    var strTmp = FSO.GetFileName(archive);
    WSH.CurrentDirectory = FSO.GetParentFolderName(archive);
    while(true) {
        var pathParts = splitExt.exec(strTmp);
        if(!pathParts) {
            echo("No extension detected for", strTmp + ".", "Skipping..");
            break;
        }

        var ext = pathParts[2].toLowerCase();
        if(!ArchiveExts.contains(ext)) {
            echo("Extension", ext, "not recognized. Skipping.");
            break;
        }

        echo("Extracting", strTmp + "..");
        var oExec = WSH.Exec('"' + exec + '" x -bd "' + strTmp + '"');
        var allInput = "";
        var tryCount = 0;

        while (true)
        {
            var input = readall(oExec);
            if (-1 == input) {
                if (tryCount++ > 10 && oExec.Status == 1)
                    break;
                WScript.Sleep(100);
             } else {
                  allInput += input;
                  tryCount = 0;
            }
        }

        if(oExec. ExitCode!= 0) {
            echo("Non-zero return code detected.");
            break;
        }

        WScript.Echo(allInput);

        strTmp = pathParts[1];
        if(!FSO.FileExists(strTmp))
            break;
    }
    WSH.CurrentDirectory = PWD;
}

function printUsage()
{
    echo("Usage:\r\n", __file__, "archive1 [archive2] ...");
    WScript.Quit(0);
}

function main(args)
{
    var exe = findExecutable();
    if(emptyStr(exe))
        fatal("Could not find 7zip executable.");

    if(!args.length || args(0) == "-h" || args(0) == "--help" || args(0) == "/?")
        printUsage();

    for (var i = 0; i < args.length; i++) {
        var archive = FSO.GetAbsolutePathName(args(i));
        if(!FSO.FileExists(archive)) {
            echo("File", archive, "does not exist. Skipping..");
            continue;
        }
        xtract(exe, archive);
    }
    echo("\r\nDone.");
}

main(WScript.Arguments.Unnamed);
 4
Author: Charles Grunwald,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-12-14 05:13:03

Ab Windows 10 Build 17063 werden tar und curl unterstützt, daher ist es möglich, a zu entpacken .Teer.gz-Datei in einem Schritt mit dem Befehl tar wie folgt.

tar -xzvf your_archive.tar.gz

Geben Sie tar --help ein, um weitere Informationen zu tar zu erhalten.

 4
Author: Juniver Hazoic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-04-23 02:33:30

Wie Sie sehen können, ist 7-Zip nicht sehr gut darin. Die Leute haben gefragt nach tarball atomic Betrieb seit 2009. Als Alternative können Sie die Bogenprogramm. Beispiel Befehl:

arc unarchive test.tar.gz
 2
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-23 02:03:42

7za funktioniert ordnungsgemäß wie folgt:

7za.exe x D:\pkg-temp\Prod-Rtx-Service.tgz -so | 7za.exe x -si -ttar -oD:\pkg-temp\Prod-Rtx-Service
 0
Author: Alan Hu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-08-31 08:08:02