运行 在 C# 中使用带有命令行的 cmd 的应用程序
Running an application using cmd with command line in C#
我正在做一个项目,需要 cmd 将 运行 应用程序。
自动填充应用程序的文本框。
目前,我已经看到这段代码,但这不起作用。
它抛出这个异常 - StandardIn has not been redirected
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Windows\System32\cmd.exe";
process.StartInfo = startInfo;
process.StandardInput.WriteLine(@"C:\Program Files\WinMerge\WinMergeU.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 Files\WinMerge\WinMergeU.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# 中实现此命令行?
有人可以帮我解决这个问题吗?
提前致谢。
在ProcessStartInfo
上使用Arguments
属性
Process process = new Process();
ProcessStartInfo startInfo = new
ProcessStartInfo(@"C:\Windows\System32\cmd.exe");
startInfo.Arguments = @"C:\Program Files\WinMerge\WinMergeU.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();
```
您的异常被抛出是因为您编写了一个命令来标准输入进程 (process.StandardInput.WriteLine()
) 在 您实际启动进程 (process.Start()
) 之前。
如果您只需要启动一个 WinMergeU
- 您根本不需要调用 cmd.exe
,可以这样做:
var fileName = @"C:\Program Files\WinMerge\WinMergeU.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);
我正在做一个项目,需要 cmd 将 运行 应用程序。
自动填充应用程序的文本框。
目前,我已经看到这段代码,但这不起作用。
它抛出这个异常 - StandardIn has not been redirected
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Windows\System32\cmd.exe";
process.StartInfo = startInfo;
process.StandardInput.WriteLine(@"C:\Program Files\WinMerge\WinMergeU.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 Files\WinMerge\WinMergeU.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# 中实现此命令行?
有人可以帮我解决这个问题吗?
提前致谢。
在ProcessStartInfo
Arguments
属性
Process process = new Process();
ProcessStartInfo startInfo = new
ProcessStartInfo(@"C:\Windows\System32\cmd.exe");
startInfo.Arguments = @"C:\Program Files\WinMerge\WinMergeU.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();
```
您的异常被抛出是因为您编写了一个命令来标准输入进程 (process.StandardInput.WriteLine()
) 在 您实际启动进程 (process.Start()
) 之前。
如果您只需要启动一个 WinMergeU
- 您根本不需要调用 cmd.exe
,可以这样做:
var fileName = @"C:\Program Files\WinMerge\WinMergeU.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);