system()到c#而不调用cmd.exe

时间:2010-05-08 14:15:31

标签: c# c cmd

如何在不调用cmd.exe的情况下将系统(“”)转换为C#? 编辑:我需要抛出类似“dir”的东西

6 个答案:

答案 0 :(得分:7)

如果我正确理解了您的问题,那么您正在寻找Process.Start

请参阅此示例(来自文档):

// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
    // url's are not considered documents. They can only be opened
    // by passing them as arguments.
    Process.Start("IExplore.exe", "www.northwindtraders.com");

    // Start a Web page using a browser associated with .html and .asp files.
    Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
    Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
 }

修改

正如你所说,你需要像“dir”这样的命令,我建议你看一下DirectoryInfo。您可以使用它来创建自己的目录列表。例如(也来自文档):

// Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009.
var files = from f in DirInfo.EnumerateFiles()
           where DirInfo.CreationTimeUtc < StartOf2009
           select f;

// Show results.
foreach (var f in files)
{
    Console.WriteLine("{0}", f.Name);
}

答案 1 :(得分:3)

正如其他人所说,它是 Process.Start 。例如:

using System.Diagnostics;

// ...

Process.Start(@"C:\myapp\foo.exe");

答案 2 :(得分:2)

不确定我是否理解你的问题。您在寻找Process.Start吗?

答案 3 :(得分:2)

I need to throw something like "dir"

如果您需要运行DIR,则需要调用cmd.exe,因为dir是cmd.exe的内部

答案 4 :(得分:1)

实际想要等效吗?你可能不会依赖于你究竟想要做什么。

例如,从命令行调用copy具有C#等价物本身File.Copy,对于dir,有一整个Directory类用于获取信息(这些是快速的成千上万的例子中有2个)。根据您所追求的内容,C#最有可能为您尝试运行的特定命令提供库/函数,通常也是一个更健壮的方法,而不是全局处理程序。

如果全局“调用此”是您所追求的,那么正如其他答案所示,使用System.Diagnostics.Process类是您最好的选择。

答案 5 :(得分:0)

如果要执行命令行(cmd.exe)命令,例如“dir”或“time”或“mkdir”,请将命令作为参数传递给cmd.exe,并带有标记/ C. / p>

例如,

cmd.exe /C dir

cmd.exe /C mkdir "New Dir"