我能以某种方式最小化C#中的7-zip输出/日志吗?

问题描述 投票:1回答:1

我正在使用此代码压缩文件夹:

ProcessStartInfo p = new ProcessStartInfo();
                        p.FileName = @"C:\Program Files\7-Zip\7z.exe";
                        p.Arguments = "a -t7z \"" + targetName + "\" \"" + item.ToString() + "\" -mx=9";
                        p.WindowStyle = ProcessWindowStyle.Minimized;
                        Process x = Process.Start(p);
                        x.WaitForExit();
                        Directory.Delete(dirPath + "\\" + item.Name, true);

正在编译应用程序时,我得到以下输出:

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Open archive: C:\a\b\folders\compress.7z
--
Path = C:\a\b\folders\compress.7z
Type = 7z
Physical Size = 881619
Headers Size = 273
Method = LZMA2:23
Solid = +
Blocks = 1

    Scanning the drive:
    1 folder, 2 files, 8258668 bytes (8066 KiB)

    Updating archive: C:\a\b\folders\compress.7z

    Add new data to archive: 1 folder, 2 files, 8258668 bytes (8066 KiB)

     60% U Folder\thisisatext.txt

但是我只想要这个:60% U Folder\thisisatext.txt我能以某种方式做到这一点吗?感谢您的任何回复。

c# compression output 7zip
1个回答
0
投票

如果您将流程的标准输出设置为重定向,例如:

p.RedirectStandardOutput = true;

([read more about this here

然后您可以将7个Zips输出读取到流读取器中:

var reader = x.StandardOutput;
var output = reader.ReadToEnd();

现在,您的程序输出存储在字符串中,您可以取回60%的值。如果它始终是输出的最后一行,则可以使用Linq来获取它:

var lastLine = output.Split('\n').Last().Trim();
Console.WriteLine(lastLine); // 60% U Folder\\thisisatext.txt"

在这种情况下,我们将输出的行拆分为数组.Split('\n'),然后选择最后一行.Last()。然后,使用.Trim()删除字符串之前或之后的所有空格。

© www.soinside.com 2019 - 2024. All rights reserved.