[英]Can I minimize somehow the 7-zip output/log in C#?
I am using this code to compress folders:我正在使用此代码来压缩文件夹:
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);
When the app is compiling I get this output:当应用程序编译时,我得到这个输出:
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
But I only want this: 60% U Folder\\thisisatext.txt
Can I do this somehow?但我只想要这个: 60% U Folder\\thisisatext.txt
我能以某种方式做到这一点吗? Thanks for any response.感谢您的任何回应。
If you set your process's standard output to redirect, like so:如果您将流程的标准输出设置为重定向,如下所示:
p.RedirectStandardOutput = true;
( read more about this here ) ( 在此处阅读更多相关信息)
You can then read 7 Zips output into a stream reader:然后,您可以将 7 个 Zips 输出读入流阅读器:
var reader = x.StandardOutput;
var output = reader.ReadToEnd();
Now that your programs output is stored in a string you can get your 60% value back.现在您的程序输出存储在一个字符串中,您可以取回 60% 的值。 If it is always the last line of the output you could use Linq to get it:如果它始终是输出的最后一行,您可以使用Linq来获取它:
var lastLine = output.Split('\n').Last().Trim();
Console.WriteLine(lastLine); // 60% U Folder\\thisisatext.txt"
In this case, we are splitting the lines of the output into an array .Split('\\n')
then selecting the last line .Last()
.在这种情况下,我们将输出的行拆分为数组.Split('\\n')
然后选择最后一行.Last()
。 We then remove any whitespace that might be before or after the string using .Trim()
.然后我们使用.Trim()
删除可能在字符串之前或之后的任何空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.