web-dev-qa-db-fra.com

Exécuter la commande CMD à partir du code

En C # WPF: Je veux exécuter une commande CMD, comment puis-je exécuter une commande cmd par programme? 

28
Jake

Voici un exemple simple: 

Process.Start("cmd","/C copy c:\\file.txt lpt1");
37
Andreas Grech

Comme mentionné par les autres réponses, vous pouvez utiliser:

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

Cependant, il existe un autre moyen. 

Vous pouvez par exemple un objet Process et appeler la méthode d'instance Start:

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

En procédant ainsi, vous pouvez configurer plus d'options avant de lancer le processus. L'objet Processus vous permet également de récupérer des informations sur le processus en cours d'exécution et vous avertit (via l'événement Exited) de la fin du processus.

Ajout: N'oubliez pas de définir 'process.EnableRaisingEvents' sur 'true' si vous souhaitez associer l'événement 'Exited'.

22
Ashley Davis

Utiliser Process.Start :

using System.Diagnostics;

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

si vous voulez démarrer une application avec cmd, utilisez ce code: 

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);
9
Zviadi

Que diriez-vous de créer un fichier de commandes avec la commande souhaitée et de l’appeler avec Process.Start

contenu dir.bat:

dir

puis appelez:

Process.Start("dir.bat");

Appelle le fichier bat et exécute le répertoire

5
Carlo

Vous pouvez l'utiliser pour travailler cmd in 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();

N'oubliez pas d'écrire/c avant votre argument !!

3
mfatihk

Argh: D pas le plus rapide

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

Vous demandez comment faire apparaître une fenêtre de commande? Si c'est le cas, vous pouvez utiliser l'objet Processus ...

Process.Start("cmd");
1
JP Alioto

En plus des réponses ci-dessus, vous pouvez utiliser une petite méthode d'extension:

public static class Extensions
{
   public static void Run(this string fileName, 
                          string workingDir=null, params string[] arguments)
    {
        using (var p = new Process())
        {
            var args = p.StartInfo;
            args.FileName = fileName;
            if (workingDir!=null) args.WorkingDirectory = workingDir;
            if (arguments != null && arguments.Any())
                args.Arguments = string.Join(" ", arguments).Trim();
            else if (fileName.ToLowerInvariant() == "Explorer")
                args.Arguments = args.WorkingDirectory;
            p.Start();
        }
    }
}

et l'utiliser comme ça:

// open Explorer window with given path
"Explorer".Run(path);   

// open a Shell (remanins open)
"cmd".Run(path, "/K");
0
Matt