Chcę uruchomić cmd i uruchomić niektóre polecenia w nim. Napisałem ten kod:uruchamianie poleceń w cmd przy użyciu C#
Process p = new Process();
ProcessStartInfo info =new ProcessStartInfo();
info.FileName = "cmd.exe";
info.WorkingDirectory = this.workingDirectory;
info.RedirectStandardInput = true;
info.UseShellExecute = false;
info.CreateNoWindow = true;
p.StartInfo = info;
var x=p.Start();
using (StreamWriter sw = p.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine(@"set path=c:\temp"+ ";%path%");
sw.WriteLine(@"@MyLongproces.exe");
}
}
Ale to nie działa:
- Nie widzę okno poleceń (nawet kiedy ustawić
info.CreateNoWindow
dofalse
). - Moje polecenie nie działa.
Na czym polega problem? i jak mogę to naprawić?
- Update1
Ten kod nie działa:
string binDirectory = Path.Combine(FileSystem.ApplicationDirectory, this.binFolderName);
ProcessStartInfo info = new ProcessStartInfo("cmd", @"/c " + Path.Combine(binDirectory, command));
info.RedirectStandardInput = false;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.CreateNoWindow = false;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = info;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
Nie cmd okno jest pokazane i spowodować, że "".
Ale ten kod działa:
Process.Start(Path.Combine(binDirectory, command));
Problem z powyższego kodu jest:
- Nie mogę określić katalog roboczy.
- Pokazuje okno CMD, gdy nie chcę, aby się wyświetlało.
Każdy pomysł, dlaczego to nie działa?
nie masz argumentu, dodasz jak @ "/ k"; – Derek
Jeśli chcesz tylko otworzyć katalog, możesz rozpocząć proces ze ścieżką do katalogu, nie musisz wykonywać polecenia cmd, aby to zrobić. – Moondustt