如何在不调用cmd.exe的情况下将系统(“”)转换为C#? 编辑:我需要抛出类似“dir”的东西
答案 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"