我能以某种方式最小化 C# 中的 7-zip output/log 吗?
Can I minimize somehow the 7-zip output/log in C#?
我正在使用这段代码来压缩文件夹:
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = @"C:\Program Files-Zipz.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
我能以某种方式做到这一点吗?感谢您的回复。
如果您将进程的标准输出设置为重定向,如下所示:
p.RedirectStandardOutput = true;
然后您可以将 7 Zips 输出读取到流中 reader:
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()
.
删除可能位于字符串之前或之后的任何空格
我正在使用这段代码来压缩文件夹:
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = @"C:\Program Files-Zipz.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
我能以某种方式做到这一点吗?感谢您的回复。
如果您将进程的标准输出设置为重定向,如下所示:
p.RedirectStandardOutput = true;
然后您可以将 7 Zips 输出读取到流中 reader:
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()
.