2009-08-10 71 views
27

En C# WPF: Quiero ejecutar un comando CMD, ¿cómo puedo ejecutar un comando cmd mediante programación?Ejecutar el comando CMD desde el código

+0

no sé mucho sobre c, C++ o C#, pero recomendaría programarlo para escribir el código en un archivo por lotes, ejecutar el archivo por lotes y luego eliminar el archivo por lotes. –

Respuesta

1

¿Estás preguntando cómo abrir una ventana de comandos? Si es así, puede utilizar la Process object ...

Process.Start("cmd"); 
10

Usando Process.Start:

using System.Diagnostics; 

class Program 
{ 
    static void Main() 
    { 
     Process.Start("example.txt"); 
    } 
} 
2

Argh: D no el más rápido

Process.Start("notepad C:\test.txt"); 
35

Aquí está un ejemplo sencillo:

Process.Start("cmd","/C copy c:\\file.txt lpt1"); 
+3

Lo estoy intentando, pero el segundo parámetro, el argumento no se está pasando realmente a la ventana de comandos, al menos no en Windows 8.1 – William

+0

@William He probado esto en Windows 10 y funciona correctamente. –

+0

@MahdiRafatjah Probé esto en Windows 7 y tampoco funciona ... idk ... –

5

H ow sobre usted creat un archivo por lotes con el comando que desea, y llama con Process.Start

contenido dir.bat:

dir 

a continuación, llamar:

Process.Start("dir.bat"); 

llamará al bate presentar y ejecutar el dir

+0

¡Gran idea! Hice el Process.Start ("test.bat") pero aparece un error que dice "Se produjo una excepción no controlada del tipo 'System.ComponentModel.Win32Exception' en System.dll". ¿Algunas ideas? – Jake

+1

Oh nvm, lo arreglé. Muchas gracias, Carlo. Muy buena idea, ayudó mucho. – Jake

+0

¡No hay problema, me alegro de poder ayudar! No olvide marcar esto como la respuesta correcta. – Carlo

20

según lo mencionado por las otras respuestas que puede utilizar:

Process.Start("notepad somefile.txt"); 

Sin embargo, hay otra manera.

Puede ejemplo, un objeto de proceso y llamar al método de instancia de inicio:

Process process = new Process(); 
    process.StartInfo.FileName = "notepad.exe"; 
    process.StartInfo.WorkingDirectory = "c:\temp"; 
    process.StartInfo.Arguments = "somefile.txt"; 
    process.Start(); 

Hacerlo de esta manera le permite configurar más opciones antes de iniciar el proceso. El objeto Proceso también le permite recuperar información sobre el proceso mientras se está ejecutando y le dará una notificación (a través del evento Exited) cuando el proceso haya finalizado.

Adición: No olvide establecer 'process.EnableRaisingEvents' en 'true' si desea enganchar el evento 'Exited'.

9

si desea iniciar la aplicación con cmd utilizan este código:

string YourApplicationPath = "C:\\Program Files\\App\\MyApp.exe" 
ProcessStartInfo processInfo = new ProcessStartInfo(); 
processInfo.WindowStyle = ProcessWindowStyle.Hidden; 
processInfo.FileName = "cmd.exe"; 
processInfo.WorkingDirectory = Path.GetDirectoryName(YourApplicationPath); 
processInfo.Arguments = "/c START " + Path.GetFileName(YourApplicationPath); 
Process.Start(processInfo); 
3

Usted puede usar esto para trabajar cmd en C#:

ProcessStartInfo proStart = new ProcessStartInfo(); 
Process pro = new Process(); 
proStart.FileName = "cmd.exe"; 
proStart.WorkingDirectory = @"D:\..."; 
string arg = "/c your_argument"; 
proStart.Arguments = arg; 
proStart.WindowStyle = ProcessWindowStyle.Hidden; 
pro.StartInfo = pro; 
pro.Start(); 

No se olvide de escribir /c antes de su argumento !!

+0

"pro.StartInfo = pro;" debería ser "pro.StartInfo = proStart;" ¿sí? – amalgamate

Cuestiones relacionadas