2 Stimmen

tar (unter Windows) eine Liste von Dateien in c#

Ich dann tar und dann gzip eine Liste von Dateien in C #.

Ich brauche Hilfe, wie ich die Argumente für tar festlegen kann.

Angenommen, ich habe tar.exe in einem Ordner c: \tar\tar.exe und eine Methode wie die folgende:

    private void RunTar(string outputFileName, List<string> fileNamePaths)
    {
        using (Process p = new Process())
        {
            p.StartInfo.FileName = @"c:\tar\tar.exe";
            p.StartInfo.Arguments = //;
            p.Start();
            p.WaitForExit();
        }
    }

Hinweis: Die Liste fileNamePathsToTar enthält die vollständigen unvollständigen Dateipfade, und die Dateien können sich in verschiedenen Ordnern befinden.

Kann mir bitte jemand helfen, was Argumente zu liefern.

Außerdem habe ich in der Dokumentation festgestellt:

-z, --gzip, --ungzip
          filter the archive through gzip

   -Z, --compress, --uncompress
          filter the archive through compress

   --use-compress-program=PROG
          filter through PROG (must accept -d)

Ich bin mir nicht sicher, wie das funktioniert, aber wenn ich gzip.exe in denselben Ordner wie tar.exe lege kann ich mein tar und dann gzip dieser Dateien in einem Schritt durchführen ?

Update

Ich kann tar anscheinend nur dazu bringen, mit Dateien zu arbeiten, die sich im selben Verzeichnis wie tar.exe befinden:

    C:\Tar Test>tar -cf out.tar c:/Tar Test/Text/t1.txt
tar: Cannot add file c:/Tar: No such file or directory
tar: Cannot add file Test/Text/t1.txt: No such file or directory
tar: Error exit delayed from previous errors

Ich habe es mit den Schrägstrichen in beide Richtungen \ oder / und mit Anführungszeichen um den vollständigen Pfad herum versucht - ohne Erfolg.

Danke

0 Stimmen

Ich würde vorschlagen, diese Frage ohne Prozess auf SuperUser zu stellen.

0 Stimmen

Versuchen Sie es auf diese Weise C:\Tar Test>tar -cf out.tar "c:/Tar Test/Text/t1.txt"

0 Stimmen

Hey, das funktioniert C:\Tar Test>tar -cf out.tar "c:/Tar Test/Text/t1.txt" Was nicht funktioniert, ist C:\Tar Test>tar -cf "c:/out.tar" "c:/Tar Test/Text/t1.txt". Ich kann also eine Datei aus einem vollständigen Pfad lesen, aber nicht an einen beliebigen Ort ausgeben, sondern nur lokal.

3voto

Federico klez Culloca Punkte 24141

Um ein Archiv zu erstellen und es zu gzipen, sollten Sie czf als Argumente verwenden, also

p.StartInfo.Arguments = "czf";

o

p.StartInfo.Arguments = "-czf";

je nach tar-Version.

um das Gzipping zu vermeiden, entfernen Sie das 'z' aus den Argumenten.

ah, und du solltest besser einen ganzen Ordner tarieren, also alle deine Dateien in einen Ordner mit dem Namen z.B. myfolder packen und diesen Ordner tarieren, nicht seinen Inhalt.

0 Stimmen

-cvf funktioniert, aber wenn ich czf versuche, erhalte ich: C:\Tar Test>tar -czf out.tar t1.txt tar: Kann nicht geforkt werden: Funktion nicht implementiert tar: Fehler ist nicht behebbar: wird jetzt beendet

0 Stimmen

Versuchen Sie out.tar.gz, nicht nur out.tar

0 Stimmen

Eigentlich können verschiedene Fehler jetzt nicht mehr auftauchen. C:\Tar Test>tar -czf out.tar.gz "c:/Tar Test/Text/t1.txt" tar: Kann nicht geforkt werden: Funktion nicht implementiert tar: Fehler ist nicht behebbar: wird jetzt beendet

0voto

Cheeso Punkte 184210

Zu Ihrer Information: Es gibt eine verwaltete tar-Bibliothek mit vollständigem Quellcode unter http://cheeso.members.winisp.net/srcview.aspx?dir=Tar&file=Tar.cs

Es gibt ein Makefile, mit dem Sie Tar.dll oder Tar.exe erstellen können. Es gibt auch eine Beispielanwendung in VB.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X