Voglio eseguire un cmd ed eseguire alcuni comandi al suo interno. Ho scritto questo codice:esecuzione di comandi in cmd utilizzando 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");
}
}
Ma non funziona:
- non riesco a vedere la finestra dei comandi (anche quando ho impostato
info.CreateNoWindow
afalse
). - Il mio comando non è in esecuzione.
Qual è il problema? e come posso ripararlo?
- Update1
Questo codice non funziona: viene mostrato
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();
Nessuna finestra cmd e il risultato è "".
Ma questo codice funziona:
Process.Start(Path.Combine(binDirectory, command));
Il problema con il codice di cui sopra è:
- non riesco a definire la directory di lavoro.
- Mostra una finestra CMD quando non lo voglio mostrare.
Qualche idea sul perché non funziona?
Non ci sono argomenti, aggiungere uno come @ "/ k"; – Derek
Se si desidera solo aprire una directory, è possibile avviare un processo con il percorso della directory, non è necessario eseguire cmd per eseguirlo. – Moondustt