как перевести систему («») на С# без вызова cmd.exe? редактировать: мне нужно бросить что-то вроде "dir"
system() в С# без вызова cmd.exe
Ответы (6)
Как уже отмечалось, это Process.Start сильный>. Пример:
using System.Diagnostics;
// ...
Process.Start(@"C:\myapp\foo.exe");
Process.Start(@"C:\myapp\foo.exe");
как таковой?
- person Pacerier; 02.04.2015
Если я правильно понял ваш вопрос, вы ищете 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», я бы посоветовал вам взглянуть на Информация о каталоге. Вы можете использовать его, чтобы создать свой собственный список каталогов. Например (также из документов):
// 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);
}
I need to throw something like "dir"
Если вам нужно запустить DIR, вам нужно вызвать cmd.exe, поскольку каталог является внутренним для cmd.exe.
Не уверен, что понимаю ваш вопрос. Вы ищете Process.Start
?
Вам на самом деле нужен аналог? Вы можете не зависеть от того, что именно вы пытаетесь сделать.
Например, вызов copy
из командной строки сам имеет эквивалент C#, File.Copy
, для dir
есть целый Directory
класс для получения информации (это два быстрых примера из тысячи). В зависимости от того, что вам нужно, C#, скорее всего, имеет библиотеку/функцию для конкретной команды, которую вы пытаетесь запустить, обычно это более надежный метод, а не глобальный обработчик.
Если глобальный «вызов этого» — это то, что вам нужно, то, как предполагают другие ответы, используя System.Diagnostics.Process
.
Если вы хотите выполнить команду командной строки (cmd.exe), например «dir», «time» или «mkdir», передайте команду в качестве аргумента cmd.exe с флагом /C.
Например,
cmd.exe /C dir
or
cmd.exe /C mkdir "New Dir"