如何通过C#将字符串传递给批处理文件,批处理文件如何接受字符串参数?

3

在我的C#项目中,场景是用户会传递类似于"c:\homedir\mydir"的路径到批处理文件,然后批处理文件应该接受这个路径并在指定的路径上创建目录。

我不知道如何通过C#将字符串传递给批处理文件,以及批处理文件如何接受字符串并处理它。


如何向命令行窗口进程发送一系列的命令? - NSGaga-mostly-inactive
为什么要将参数传递给批处理文件?难道不能在C#应用程序内部处理吗?这会使事情变得复杂,例如从批处理文件中获取反馈。如果出现问题,你怎么知道呢?你可以使用状态/结果代码,但这并不是非常健壮的方法。 - pero
嗨,Peter,感谢您的建议,我将尝试从C#应用程序中实现相同的功能。 - Rushikesh
2个回答

2

创建一个进程,并通过 StartInfo.Arguments 属性传递参数。

Process proc = new Process();
proc.StartInfo.FileName = //path to your BAT file
proc.StartInfo.Arguments = String.Format("{0}", @"C:\homedir\mydir");
//set the rest of the process settings
proc.Start();

这将加载您的BAT文件并传递您添加的任何参数。您的BAT文件可以使用%1表示第一个参数,%2表示第二个参数等来访问参数。


也许可以添加一些信息,让C#代码知道批处理何时结束。如果它无限循环怎么办?顺便说一句,在启动新进程之前,请检查给定目录是否存在。 - pero
公正的评论,但我的回答假设OP将负责错误处理。 OP的帖子中没有足够的细节值得尝试涵盖所有可能的方面。 - keyboardP

1

由于您没有给我们任何信息,我只举一个这些主题的例子。

首先,您需要使用 Process 类,包括 System.Diagnostics 命名空间。

提供访问本地和远程进程的功能,并使您能够启动和停止本地系统进程。

使用批处理文件的示例:

 Process p = new Process();
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "yourbatchfile.bat";
 p.Start();

要传递参数,您可以使用 ProcessStartInfo.Arguments 属性。

获取或设置启动应用程序时要使用的命令行参数集。


谢谢Soner,这对我很有帮助。 - Rushikesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接