我正在用C#开发wpf应用程序。我在我的应用程序中使用grib文件。我想将这个grib文件内容转换为csv文件。从命令提示符我可以轻松地执行此操作。为此,在命令提示符下,我需要转到degrib.exe的文件夹位置,即c:\ ndfd \ degrib \ bin。对于任何其他路径命令将不会执行。我正在使用以下命令
C:\ndfd\degrib\bin\degrib D:\Documents\Pacificwind.grb -C -msg 1 -Csv
C:\ndfd\degrib\bin\degrib D:\Documents\Pacificwind.grb -C -msg all -nMet -Csv
命令成功执行。我能够在C:\ ndfd \ degrib \ bin文件夹中看到生成的csv文件。我该如何从C#执行相同的命令。我见过不同的例子,但没有一个适合我。能否请您提供我可以解决上述问题的任何代码或链接?
答案 0 :(得分:8)
这将有效,除非您提供的路径不正确:
Process.Start(@"C:\ndfd\degrib\bin\degrib",
@"D:\Documents\Pacificwind.grb -C -msg 1 -Csv");
Process.Start(@"C:\ndfd\degrib\bin\degrib",
@"D:\Documents\Pacificwind.grb -C -msg all -nMet -Csv")
答案 1 :(得分:2)
您可以使用ProcessStartInfo类为启动的应用程序设置工作目录 例如
ProcessStartInfo pInfo = new ProcessStartInfo("degrib.exe");
pInfo.WorkingDirectory = @"C:\ndfd\degrib\bin"
pInfo.Arguments = @"D:\Documents\Pacificwind.grb -C -msg 1 -Csv";
Process p = Process.Start(pInfo);
// Are I assume that the second processing need to wait for the first to finish
p.WaitForExit();
// Start the second run.....
pInfo = new ProcessStartInfo("degrib.exe");
pInfo.WorkingDirectory = @"C:\ndfd\degrib\bin"
pInfo.Arguments = @"D:\Documents\Pacificwind.grb -C -msg all -nMet -Csv";
Process.Start(pInfo);
另请查看Process类和WaitForExit方法
的文档 编辑:我真的不知道它是什么degrib
,现在我已经更新了答案,合理地假设你想要得到什么。如果路径和可执行文件名称正确,请告诉我。
答案 2 :(得分:0)
您可以使用以下方法执行exe文件
System.Diagnostics.Process.Start(exePath + "LSAPP.exe");
答案 3 :(得分:0)
using (Process process = Process.Start(...))
process.WaitForExit(); // You can wait for process to exit or go idle.
答案 4 :(得分:0)
您可以使用Process.Start()
创建一个Process对象
process = new Process {StartInfo = startInfo};
并创建您的ProcessStartInfo对象
startInfo = new ProcessStartInfo(pathToExecutable, arguments);
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = false;
startInfo.RedirectStandardOutput = true;
process = new Process { StartInfo = startInfo };
并使用获取输出
process.OutputDataReceived event