11
votes

Le système ne peut pas trouver le fichier spécifié lors de l'exécution de cmd.exe de C #

Je reçois le message d'erreur lors de l'exécution du code suivant à partir d'un programme C # Console.

"Le système ne peut pas trouver le fichier spécifié "

Voici le code:

System.Diagnostics.Process.start ("C: \ Windows \ System32 \ cmd.exe / c ");

étrangement lorsque je omettons le commutateur / C, la commande peut exécuter !?!

Des idées ce que je fais mal?


1 commentaires

J'ai le même problème, mais à partir de la ligne de commande: U: \> cmd.exe Microsoft Windows [version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Tous les droits sont réservés. Le système ne peut pas trouver le chemin spécifié.


7 Réponses :


0
votes

Vous avez besoin d'ajouter @ avant le chemin. Comme ceci: @ "c: \ windows \ system32 \ cmd.exe / c"


0 commentaires

3
votes

Il y a une surcharge de départ pour prendre des arguments. Utilisez celui-là à la place.

System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe",  "/c");


0 commentaires

0
votes

Je pense que la question est que vous essayez de passer un argument (/ c) dans le cadre du chemin.

Les arguments et le nom de fichier sont deux éléments distincts de la classe de processus.

Essayez xxx

http://msdn.microsoft.com/en-us/library/h6ak8zt5.aspx


0 commentaires

7
votes

Eh bien, pour une chose, vous êtes un chemin de codage acharné, qui est déjà destiné à rompre sur le système de quelqu'un (tout l'installation de Windows n'est pas dans C: \ Windows ).

Mais le problème ici est que ces backslashes sont utilisées comme caractère d'échappement. Il existe deux façons d'écrire une chaîne de chemin comme celle-ci - échapper aux backslashes: xxx

ou utilisez le @ pour désactiver l'échappement des barres anti-backslash: xxx

Vous devez également passer / c comme un argument, pas dans le chemin - Utilisez la deuxième surcharge de processus.start < / code> comme indiqué ci-dessus.


0 commentaires

11
votes

processus.start prend un nom de fichier comme argument. Passez l'argument comme deuxième paramètre: xxx


0 commentaires

3
votes

Je peux voir trois problèmes avec le code que vous avez publié:

1) Vous n'échappez pas votre chaîne de chemin de chemin correctement
2) Vous devez transmettre l'argument / c séparément sur le chemin que vous souhaitez exécuter
3) Vous supposez chaque machine que ce code est exécuté avec une installation C: \ Windows P>

Je proposerais l'écrire comme suit: P>

string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory,"cmd.exe");
System.Diagnostics.Process.Start(cmdPath, "/c"); 


0 commentaires

-1
votes

Le moyen le plus simple consiste à ajouter le programme à la solution avec ajouter l'élément existant et à taper xxx


1 commentaires

Ne semble pas répondre à la question posée. L'OP a à voir avec des arguments de ligne de commande que vous ne démontrez pas du tout.