как перевести систему («») на С# без вызова 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"