使用带有C#命令行的cmd运行应用程序



我正在处理一个需要cmd的项目。cmd将运行应用程序。

自动填充应用程序的文本框。

目前,我已经看到了这个代码,但这不起作用。

它抛出此异常-StandardIn has not been redirected

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:WindowsSystem32cmd.exe";                  
process.StartInfo = startInfo;
process.StandardInput.WriteLine(@"C:Program FilesWinMergeWinMergeU.exe" + txtJOB.Text + txtKJOB.Text + "- minimize - noninteractive - noprefs - cfg Settings / DirViewExpandSubdirs = 1 - cfg ReportFiles / ReportType = 2 - cfg ReportFiles / IncludeFileCmpReport = 1 - r - u -or" + txtResultPath.Text);
process.Start();

如果我使用cmd并运行这行

"C:Program FilesWinMergeWinMergeU.exe" + txtJOB.Text + txtKJOB.Text + "- minimize - noninteractive - noprefs - cfg Settings / DirViewExpandSubdirs = 1 - cfg ReportFiles / ReportType = 2 - cfg ReportFiles / IncludeFileCmpReport = 1 - r - u -or" + txtResultPath.Text

这确实有效。但是我将如何在c#中实现这个命令行呢?

有人能帮我吗?

提前感谢。

您的异常被抛出,因为您在实际启动进程(process.Start()(之前编写了一个命令来支持进程(process.StandardInput.WriteLine()(的输入。

如果你只需要启动一个WinMergeU-你根本不需要调用cmd.exe,可以这样做:

var fileName = @"C:Program FilesWinMergeWinMergeU.exe";
var arguments = $"{txtJOB.Text} {txtKJOB.Text} -minimize -noninteractive -noprefs " +
"-cfg Settings/DirViewExpandSubdirs=1 -cfg ReportFiles/ReportType=2 " +
$"-cfg ReportFiles/IncludeFileCmpReport=1 -r -u -or {txtResultPath.Text}";
Process.Start(fileName, arguments);

ProcessStartInfo上使用Arguments属性

Process process = new Process();
ProcessStartInfo startInfo = new 
ProcessStartInfo(@"C:WindowsSystem32cmd.exe");
startInfo.Arguments = @"C:Program FilesWinMergeWinMergeU.exe" + txtJOB.Text + txtKJOB.Text + "- minimize - noninteractive - noprefs - cfg Settings / DirViewExpandSubdirs = 1 - cfg ReportFiles / ReportType = 2 - cfg ReportFiles / IncludeFileCmpReport = 1 - r - u -or" + txtResultPath.Text;
process.StartInfo = startInfo;
process.Start();

```

相关内容

  • 没有找到相关文章