如何执行DOS命令并获取结果

25 浏览
0 Comments

如何执行DOS命令并获取结果

我C#应用程序的要求是从命令行中发出dir命令(当前目录为J:\ MyFolder>),并在我的C#应用程序中接收该命令的输出。

我在MSDN上尝试了一些发出命令行的示例,比如“/c dir”,但我也想获取结果。

有人可以帮助我吗?提前谢谢。

0
0 Comments

如何执行DOS命令并检索结果

在编程过程中,有时候我们需要执行DOS命令并获取结果。然而,有一种常见的方法被认为是不推荐的,并且有更好的解决方法。

原因:

不推荐的方法是直接执行DOS命令,然后通过读取控制台输出来获取结果。这种方法存在一些问题,包括:

1. 可能会导致安全问题,因为直接执行DOS命令可能会被恶意用户利用。

2. 控制台输出的格式不一致,无法直接解析结果。

3. 需要额外的代码来处理控制台输出,并提取我们需要的结果。

解决方法:

更好的解决方法是使用DirectoryInfo类来执行DOS命令并获取结果。DirectoryInfo类是.NET框架中的一个类,提供了执行DOS命令的方法,并且可以直接返回结果,而无需处理控制台输出。

下面是使用DirectoryInfo类执行DOS命令并获取结果的示例代码:

string command = "dir"; // 需要执行的DOS命令
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\"); // 指定需要执行命令的目录
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.WorkingDirectory = directoryInfo.FullName;
process.StartInfo.Arguments = "/c " + command;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();

上述代码中,我们首先指定需要执行的DOS命令和目录。然后创建一个Process对象,并设置其相关属性,包括命令行解释器的文件名、工作目录、命令行参数等。最后启动进程,并通过StandardOutput属性获取命令的输出结果。

通过使用DirectoryInfo类来执行DOS命令并获取结果,我们可以更加安全和方便地实现这个功能。同时,也避免了处理控制台输出的麻烦。

0
0 Comments

在这篇文章中,我们将讨论如何在C#程序中执行DOS命令并检索结果。我们将使用ProcessStartInfo类来调用其他的exe文件和批处理文件,并将输出和错误重定向回C#程序。

首先,我们需要使用ProcessStartInfo类来设置进程的一些属性。我们可以设置FileName属性为需要执行的命令行程序,例如cmd.exe。然后,我们可以使用Arguments属性来传递命令行参数,例如"/C dir"命令用于在命令行窗口中执行dir命令。接下来,我们可以设置RedirectStandardOutput属性为true,以便将命令的输出重定向到我们的C#程序中。

然后,我们可以使用Process类的Start方法来启动进程。然后,我们可以使用Process类的StandardOutput属性来获取命令的输出结果。我们可以使用ReadToEnd方法来读取输出并将其存储在一个字符串变量中。

最后,我们可以对输出结果进行必要的格式化操作,例如使用字符串操作来提取我们感兴趣的信息。

总结起来,我们可以通过以下步骤来执行DOS命令并检索结果:

1. 使用ProcessStartInfo类来设置进程属性,包括要执行的命令和参数,以及将输出重定向到我们的程序。

2. 使用Process类的Start方法启动进程。

3. 使用Process类的StandardOutput属性获取命令的输出结果。

4. 对输出结果进行必要的格式化操作。

请注意,尽管我们可以通过这种方式执行DOS命令并检索结果,但在实际开发中,根据逻辑的复杂性,可能更适合直接在代码中实现相应的功能。

0
0 Comments

如何执行DOS命令并检索结果

在使用“command.com”作为可执行文件并将命令行作为参数传递的同时,将标准输出(stdout)重新定向回程序中,这是基本的思路。

我刚刚查看了以下两个链接:http://www.dotnetperls.com/process-starthttp://www.dotnetperls.com/redirectstandardoutput,这些链接对你需要做的事情进行了合理的描述。

这并不是很难,主要是耗费时间来确保所有细节都正确!

在编程之前,可以调用command.com来测试并确保可以使用它来发出命令。我在C:\WINDOWS\system32找到了我的command.com副本。

希望能对你有所帮助,请提出更多问题。

0