tar (в Windows) список файлов в c # - PullRequest
       21

tar (в Windows) список файлов в c #

2 голосов
/ 17 сентября 2009

Я затем tar и затем gzip список файлов в C #.

Мне нужна помощь с тем, как установить аргументы для tar.

Скажем, у меня есть tar.exe в папке c: \ tar \ tar.exe и метод, подобный следующему:

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

Примечание: список fileNamePathsToTar содержит полные пути к файлам unc, и файлы могут находиться в разных папках.

Может ли кто-нибудь помочь с тем, какие аргументы предоставить.

Также замечаю в документации:

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

Не уверен, как это использовать, но если я поместу gzip.exe в ту же папку, что и tar.exe , могу ли я выполнить tar, а затем скопировать все эти файлы gzip за один шаг ?

Update

Может показаться, что tar работает только с файлами в том же каталоге, что и tar.exe, если я пытаюсь указать полное имя пути, я получаю что-то вроде:

    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

Я пробовал с косыми чертами в обоих направлениях \ или / и с кавычками по всему пути, без радости.

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 сентября 2009

, чтобы создать архив и распаковать его, вы должны использовать czf в качестве аргументов, поэтому

p.StartInfo.Arguments = "czf";

или

p.StartInfo.Arguments = "-czf";

в зависимости от версии tar.

, чтобы избежать gzipping, удалите 'z' из аргументов.

ах, и вам лучше скопировать всю папку, например, поместить весь ваш файл в папку с именем, например myfolder и tar в эту папку, а не в ее содержимое.

0 голосов
/ 18 декабря 2009

FYI, есть управляемая библиотека tar с полным исходным кодом, доступная по адресу http://cheeso.members.winisp.net/srcview.aspx?dir=Tar&file=Tar.cs

Существует make-файл, позволяющий вам собирать Tar.dll или Tar.exe. В VB также есть пример приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...