2009-09-17 14 views
2

Je puis tar, puis gzip une liste de fichiers en C#.tar (sur Windows) une liste de fichiers dans C#

J'ai besoin d'aide pour définir les arguments de tar.

Dire que j'ai tar.exe dans un dossier c: \ tar \ tar.exe et une méthode comme ce qui suit:

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(); 
     } 
    } 

Note: la liste fileNamePathsToTar a les chemins d'accès complets de noms de fichiers et les fichiers unc peut être dans différents dossiers.

Quelqu'un peut-il s'il vous plaît aider avec ce que arguments pour fournir.

Je remarque aussi dans la documentation:

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

Je ne sais pas comment utiliser cela, mais si je place le gzip.exe dans le même dossier que tar.exe puis-je effectuer le goudron puis gzip ces fichiers tous en une seule étape?

Mise à jour

Je ne peux pas sembler obtenir le goudron pour travailler sur des fichiers dans le même répertoire que tar.exe si je tente un nom de chemin complet, je reçois quelque chose comme:

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 

I 'ai essayé avec les barres obliques des deux façons \ ou/et avec des citations sur le chemin complet aucune joie.

Merci

+0

Je suggère de demander ce processus w/o sur SuperUser. –

+0

essayez de cette façon C: \ Tar Test> tar -cf out.tar "c:/Test Tar/Text/t1.txt" –

+0

Hey cela fonctionne C: \ Tar Test> tar -cf out.tar "c:/Tar Test/Text/t1.txt " Ce qui ne fonctionne pas est C: \ Tar Test> tar -cf" c:/out.tar "" c:/Tar Test/Text/t1.txt ". Donc, je peux lire un fichier à partir d'un chemin complet, mais pas de sortie à un emplacement seulement localement. – m3ntat

Répondre

3

pour créer une archive et gzip, vous devez utiliser czf comme arguments, si

p.StartInfo.Arguments = "czf"; 

ou

p.StartInfo.Arguments = "-czf"; 

selon la version de goudron.

Pour éviter le gzipping, supprimez le 'z' des arguments.

ah, et vous feriez mieux de taper un dossier entier, comme mettre tout votre fichier dans un dossier nommé, par exemple, myfolder et tar ce dossier, pas son contenu.

+0

-cvf fonctionne mais quand j'essaie czf je reçois: C: \ Test de goudron> goudron -czf out.tar t1.txt goudron: Impossible fourche: Fonction non implémentée tar: Erreur non récupérable: sortir maintenant essayer – m3ntat

+0

out.tar.gz, pas seulement out.tar –

+0

En fait, une erreur différente ne peut maintenant pas bifurquer. C: \ Tar Test> tar -czf out.tar.gz "c:/Test Tar/Text/t1.txt" tar: Can not fork: Fonction non implémentée tar: Erreur non récupérable: quitter maintenant – m3ntat