2013-04-25 1 views
1

я в C# сделать следующее:Запуска/команда нереста против файлов в C#

var pSpawn = new Process 
    { 
     StartInfo = { WorkingDirectory = @"C:\temp", FileName = fileToRun, CreateNoWindow = true } 
    }; 
    pSpawn.Start(); 

и это работает отлично .... однако мне интересно, если есть способ, чтобы выполнить команду (например: «dir/b») без необходимости инкапсулировать его в пакетный файл?

ответ

3

Просто запустите cmd.exe и передать аргументы требуется

var pSpawn = new Process 
{ 
    StartInfo = 
    { 
     WorkingDirectory = @"C:\temp", 
     FileName = "cmd.exe", 
     Arguments ="/K dir /b" } 
}; 

pSpawn.Start(); 

Я добавил параметр /K, чтобы оставить окно командной строки открыть так, то можно увидеть вывод команды dir.
Конечно, я думаю, что вам действительно интересно поймать вывод команды.
В этом случае вы могли бы работать с чем-то вроде этого:

StringBuilder sb = new StringBuilder(); 
var pSpawn = new Process 
{ 
    StartInfo = 
    { 
     WorkingDirectory = @"C:\temp", 
     FileName = "cmd.exe", 
     Arguments ="/c dir /b", 
     CreateNoWindow = true, 
     RedirectStandardOutput = true, 
     RedirectStandardInput = true, 
     UseShellExecute = false 
    } 
}; 

pSpawn.OutputDataReceived += (sender, args) => sb.AppendLine(args.Data); 
pSpawn.Start(); 
pSpawn.BeginOutputReadLine(); 
pSpawn.WaitForExit(); 
Console.WriteLine(sb.ToString()); 
+0

спасибо, очень признателен! приятно, что это было просто! – Kixoka

2

Вы можете назвать что-то вроде этого:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.Arguments = "/c dir /b"; 
Process.Start(info); 
Смежные вопросы