我在c#中做一个应用程序,使用wget命令通过Url下载包含.jpeg和.j2k文件的文件夹。
为此我使用以下命令:
"wget -r -c -np --retry-connrefused --tries=0 http://url/folder1 -P E:\\Images --cut-dirs=2 -nH -A j2k -o E:\\Images\\error.log
“
使用此命令下载包含子文件夹的文件夹,其中包含j2k类型的图像,如果我用jpeg替换j2k类型,那么它将下载包含子文件夹的文件夹,其中包含类型为jpeg的图像(如果存在)。如果不存在,则仅显示空文件夹,并在error.log中显示找不到文件404错误。
如果我运行上面的命令并假设在该文件夹中只有jpeg文件没有j2k文件。然后在找到404错误的文件后,我想停止wget并再次想要启动wget文件类型.jpeg。我还有多个包含图像的子文件夹。因此,对于每个子文件夹,我想检查文件未找到错误。
为此我可以通过阅读日志文件来实现。但是每次都无法读取日志文件。它减缓了这个过程。此外,我只提供路径到父文件夹。此解决方案仅在找到第一个子文件夹的第一个404文件未找到错误后才起作用,如果在剩余文件夹中存在j2k文件仍然在第一个子文件夹404文件中未下载错误,则会下载jpeg文件。
我尝试使用Process.ErrorDataReceived
,但仍然没有取得成功。
代码如下。
public void Start()
{
try
{
Process process = new Process();
process.StartInfo.FileName = "path of wget.exe";
process.StartInfo.Arguments = "wget -r -c -np --retry-connrefused --tries=0 http://url/folder1 -P E:\\Images --cut-dirs=2 -nH -A j2k -o E:\\Images\\error.log";
process.EnableRaisingEvents = false;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hide;
process.ErrorDataReceived += new DataReceivedEventHandler(ProcessErrorDataRecieved);
process.Start()
process.BeginErrorReadLine();
process.WaitForExit();
}
catch (Exception ex)
{
/////
}
}
private void ProcessErrorDataRecieved(object sender, DataReceivedEventArgs e)
{
MessageBox.Show(e.Data);
}
在上面的情况下,j2k不存在然后进程被终止并且在日志文件“找不到文件错误”中。但是错误没有通过errordatarecieved获取陷阱.e.data总是显示为null。(process.ExitCode即将到来)零总是。)
那么如何仅使用Process
类来捕获错误?
感谢任何帮助。