আমি কীভাবে একটি পদক্ষেপে .tar.gz আনজিপ করতে পারি (7-জিপ ব্যবহার করে)?


82

আমি উইন্ডোজ এক্সপি-তে 7-জিপ ব্যবহার করছি এবং যখনই আমি .tar.gz ফাইল ডাউনলোড করি তবে ফাইল (গুলি) সম্পূর্ণরূপে বের করতে আমার দুটি পদক্ষেপ লাগে takes

  1. আমি উদাহরণ . tar.gz ফাইলটিতে ডান ক্লিক করুন এবং প্রসঙ্গ মেনু থেকে এখানে 7-জিপ -> এক্সট্র্যাক্ট চয়ন করুন
  2. আমি তারপরে ফলাফল হিসাবে নেওয়া ফাইল.টর ফাইলটি আবার ডান ক্লিক করুন এবং প্রসঙ্গ মেনু থেকে এখানে 7-জিপ -> এক্সট্র্যাক্ট চয়ন করুন

প্রসঙ্গ মেনুতে কি এক ধাপে এটি করার কোনও উপায় আছে?

উত্তর:


46

আসলে তা না. একটি .tar.gz বা .tgz ফাইলটি সত্যই দুটি ফর্ম্যাট: .tarসংরক্ষণাগার, এবং .gzহ'ল সংকোচন। সুতরাং প্রথম পদক্ষেপটি সঙ্কোচিত হয় এবং দ্বিতীয় পদক্ষেপটি সংরক্ষণাগারটি বের করে।

একপর্যায়ে এটি করার জন্য, আপনার tarপ্রোগ্রামটি দরকার । সাইগউইন এর মধ্যে রয়েছে।

tar xzvf foobaz.tar.gz

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

7-জিপ জিইউআইতে ফাইলটি খোলার মাধ্যমে আপনি এটি "এক ধাপে "ও করতে পারেন: .tar.gzফাইলটি খুলুন , অন্তর্ভুক্ত .tarফাইলটিতে ডাবল ক্লিক করুন, তারপরে সেই ফাইলগুলি আপনার পছন্দসই জায়গায় সরিয়ে নিতে পারেন।

লোকেরা এখানে টিজিজেড এবং বিজে 2 ফাইলের এক-পদক্ষেপের হ্যান্ডলিংয়ের জন্য জিজ্ঞাসা / ভোটদানের একটি দীর্ঘ চলমান থ্রেড রয়েছে । এখন পর্যন্ত অভাবের ক্রিয়াটি নির্দেশ করে যে কেউ পদক্ষেপ না নিয়ে এবং অর্থবহ অর্থদান (কোড, অর্থ, কিছু) অবদান না হওয়া পর্যন্ত এটি ঘটবে না going


70
যদি 7 জিপ স্মার্ট হয়, তবে এটি 992.99% সময়কালের পরে এটি ডিফল্টরূপে এক ধাপে এটি করবে user আসলে এটি উইনআর এর ডিফল্ট অপারেশন।
ডেভর

6
@ ডেভর: 7-জিপ একটি মুক্ত উত্স প্রচেষ্টা; এই বৈশিষ্ট্যটির জন্য বিনা দ্বিধায় এইভাবে v4.65 পরিচালনা করে; আমি নতুন v9.x আলফাসের চেষ্টা করিনি, সুতরাং এটি ইতিমধ্যে অন্তর্ভুক্ত থাকতে পারে।
কোয়াকোট কোয়েসোট

ইয়াহ, উইনআর এর অপারেশন থেকে আমি এটাই মিস করছি। আমি আজও তা নিশ্চিত করে বলতে পারি, অক্টোবরে, ২০১২, z জিপ এখনও 1 টি পদক্ষেপ নিয়ে স্বয়ংক্রিয়ভাবে সঙ্কোচিত হয় না। দীর্ঘশ্বাস
ফেডমিচ

8
মনে রাখবেন যে "এক ধাপে" নির্দেশাবলী আসলে এটি একটি ধাপে করে না, এটি আসলে .gz কে একটি অস্থায়ী ফোল্ডারে রূপান্তরিত করে, তারপরে 7-জিপে .tar ফাইলটি খোলে। সংরক্ষণাগারগুলি যথেষ্ট ছোট হলে এটি খুব কমই লক্ষণীয় হয় তবে বড় আর্কাইভগুলিতে এটি খুব লক্ষণীয়। শুধু ভেবেছি যে স্পষ্টির প্রাপ্য।
নাস্কিং

এক-পদক্ষেপের নির্দেশাবলী সহ একটি নতুন উত্তর রয়েছে।
বেরেট

25

পুরানো প্রশ্ন, তবে আমি আজ এটির সাথে লড়াই করছি তাই এখানে আমার 2 সি আছে। 7zip কমান্ডলাইন সরঞ্জাম "7z.exe" (আমার v9.22 ইনস্টল আছে) স্ট্ডআউটে লিখতে এবং স্ট্ডিনের কাছ থেকে পড়তে পারে যাতে আপনি পাইপ ব্যবহার করে মধ্যবর্তী টার ফাইল ছাড়াই করতে পারেন:

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

কোথায়:

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

কমান্ড লাইন কমান্ড এবং স্যুইচ সম্পর্কে আরও তথ্যের জন্য ইনস্টল ডিরেক্টরিতে সহায়তা ফাইল (7-zip.chm) দেখুন।

আপনি .tar.gz / .tgz ফাইলগুলির জন্য একটি প্রসঙ্গ মেনু এন্ট্রি তৈরি করতে পারেন যা রেজিডিট বা স্টেক্সবারের মতো একটি তৃতীয় পক্ষের সরঞ্জাম ব্যবহার করে উপরের কমান্ডটিকে কল করে ।


-আওআ সুইচ কি করে? এটিতে তালিকাভুক্ত নয় -? পৃষ্ঠা
সুপারল

2
..এইচ তবে এটি হেল্প ফাইলে রয়েছে; -আও [এ | এস | টি | ইউ] (ওভাররাইট মোড)। এইভাবে: -আওআ = সমস্ত বিদ্যমান ফাইলকে ওভাররাইট করে ডাব্লু / ও প্রম্পট
সুপারোল

উত্তরের উত্তর কিন্তু লুপটি ওপি কর্তৃক জিজ্ঞাসা করা হয়নি। জোছিমের (অনুরূপ) এক-লাইনের উত্তর দুর্দান্ত এবং বিন্দুতে!
জেসন

@Jason যে উত্তর ঠিক একই হিসাবে আমার এইরকম উত্তর দেন stackoverflow.com/a/14699663/737471 আমি শুধু এই একটি সম্পাদনা পারে ...
user2856

9

7-জিপ 9.04 দিয়ে শুরু করে প্লেইন .tarফাইলের জন্য অন্তর্বর্তী স্টোরেজ ব্যবহার না করে সম্মিলিত নিষ্কাশন করার জন্য একটি কমান্ড-লাইন বিকল্প রয়েছে :

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

-tgzip.tgzপরিবর্তে যদি ইনপুট ফাইলটির নাম দেওয়া হয় তবে এটি প্রয়োজন .tar.gz


2
উইন্ডোজ 10 এক্সপ্লোরার প্রসঙ্গ মেনুতে এটি পেতে কোনও উপায়?
ব্রায়ান লেশম্যান

4

আপনি উইন্ডোজ এক্সপি ব্যবহার করছেন, সুতরাং আপনার ডিফল্টরূপে উইন্ডোজ স্ক্রিপ্টিং হোস্ট ইনস্টল করা উচিত। যা বলা হচ্ছে, আপনার যা প্রয়োজন তা করার জন্য এখানে একটি ডাব্লুএসএইচ জেএসক্রিপ্ট স্ক্রিপ্ট রয়েছে। কেবলমাত্র ফাইলের নাম xtract.bat বা সেই লাইনগুলি বরাবর যে কোনও কিছুতে কোডটি অনুলিপি করুন (এটির এক্সটেনশন যতক্ষণ না হওয়া .batযায়) এবং চালান:

xtract.bat example.tar.gz

ডিফল্টরূপে, স্ক্রিপ্ট স্ক্রিপ্টটির ফোল্ডারটি পাশাপাশি আপনার সিস্টেমের PATHপরিবেশের পরিবর্তনশীল 7z.exe জন্য পরীক্ষা করবে। আপনি যদি এটি কীভাবে স্টাফের জন্য দেখতে চান তা পরিবর্তন করতে চান, আপনি এক্সিকিউটেবলের নামটি যা চান তাতে স্ক্রিপ্টের শীর্ষে সেভেনজাইপেক্স ভেরিয়েবলটি পরিবর্তন করতে পারেন। (উদাহরণস্বরূপ, 7za.exe বা 7z-real.exe) আপনি সেভেনজিপডির পরিবর্তন করে এক্সিকিউটেবলের জন্য একটি ডিফল্ট ডিরেক্টরিও সেট করতে পারেন। সুতরাং যদি 7z.exeহয় C:\Windows\system32\7z.exe, আপনি লাগাতে চাই:

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

যাইহোক, এখানে স্ক্রিপ্ট:

@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);

আমার এরকম কিছু জানা নেই. আমি প্রথমে এটি নীচের উত্স ভান্ডারে খুঁজে পেয়েছি: github.com/ynkdir/winscript এটি কাজ করে, কারণ ডাব্লুএসএইচ jscript ইঞ্জিন দৃশ্যত প্রথম বিটটিকে উপেক্ষা করে, মন্তব্য শুরু হওয়া পর্যন্ত। আরও তথ্য এখানে পাওয়া যাবে: stackoverflow.com/questions/4999395/…
চার্লস গ্রানওয়াল্ড

এটি খুঁজে পেয়েছে: javascriptkit.com/javatutors/conditionalcompile2.shtml যা মনে করে যে @set @var = valueসংকলন-সময় ভেরিয়েবলগুলি ঘোষণার জন্য এটি JScript সিনট্যাক্স। সুতরাং এটি উভয়ই বৈধ JScript এবং একটি CMD কমান্ড
hdgarrood

2

আপনি দেখতে পাচ্ছেন 7-জিপ এই সময়ে খুব ভাল নয়। ২০০৯ সাল থেকে লোকেরা টারবাল পারমাণবিক অপারেশন করার জন্য জিজ্ঞাসা করছে Go গোতে একটি ছোট প্রোগ্রাম (490 কেবি) এখানে এটি করতে পারে, আমি এটি আপনার জন্য সংকলন করেছি

package main
import (
  "archive/tar"
  "compress/gzip"
  "flag"
  "fmt"
  "io"
  "os"
  "strings"
 )

func main() {
  flag.Parse() // get the arguments from command line
  sourcefile := flag.Arg(0)
  if sourcefile == "" {
    fmt.Println("Usage : go-untar sourcefile.tar.gz")
    os.Exit(1)
  }
  file, err := os.Open(sourcefile)
  if err != nil {
    fmt.Println(err)
    os.Exit(1)
  }
  defer file.Close()
  var fileReader io.ReadCloser = file
  // just in case we are reading a tar.gz file,
  // add a filter to handle gzipped file
  if strings.HasSuffix(sourcefile, ".gz") {
    if fileReader, err = gzip.NewReader(file); err != nil {
      fmt.Println(err)
      os.Exit(1)
    }
    defer fileReader.Close()
  }
  tarBallReader := tar.NewReader(fileReader)
  // Extracting tarred files
  for {
    header, err := tarBallReader.Next()
    if err != nil {
      if err == io.EOF {
        break
      }
      fmt.Println(err)
      os.Exit(1)
    }
    // get the individual filename and extract to the current directory
    filename := header.Name
    switch header.Typeflag {
    case tar.TypeDir:
      // handle directory
      fmt.Println("Creating directory :", filename)
      // or use 0755 if you prefer
      err = os.MkdirAll(filename, os.FileMode(header.Mode))
      if err != nil {
        fmt.Println(err)
        os.Exit(1)
      }
    case tar.TypeReg:
      // handle normal file
      fmt.Println("Untarring :", filename)
      writer, err := os.Create(filename)
      if err != nil {
        fmt.Println(err)
        os.Exit(1)
      }
      io.Copy(writer, tarBallReader)
      err = os.Chmod(filename, os.FileMode(header.Mode))
      if err != nil {
        fmt.Println(err)
        os.Exit(1)
      }
      writer.Close()
    default:
      fmt.Printf("Unable to untar type : %c in file %s", header.Typeflag,
      filename)
    }
  }
}

1

উইন্ডোজ 10 বিল্ড 17063 থেকে শুরু করে tarএবং curlএটি সমর্থিত, সুতরাং tarনীচের মতো কমান্ড ব্যবহার করে একটি স্টার্টে .tar.gz ফাইলটি আনজিপ করা সম্ভব ।

tar -xzvf your_archive.tar.gz

tar --helpসম্পর্কে আরও তথ্যের জন্য টাইপ করুন tar


tar, curl, ssh, sftp, rmb পেস্টিং এবং আরও বিস্তৃত স্ক্রিন। ব্যবহারকারীরা পচা নষ্ট হয়ে গেছে।
ম্যাকেনজম

0

7za নীচের মত সঠিকভাবে কাজ করছে:

7za.exe x D:\pkg-temp\Prod-Rtx-Service.tgz -so | 7za.exe x -si -ttar -oD:\pkg-temp\Prod-Rtx-Service

3
এই আদেশটি কীভাবে কাজ করে তার চারপাশে আপনি কিছু প্রসঙ্গ যুক্ত করতে পারেন? দয়া করে দেখুন কীভাবে উত্তর দেবেন এবং আমাদের ভ্রমণটি করুন
বুগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.