2010-02-21 2 views
0

Je souhaite appeler depuis une application C# une ligne de commande en commençant par une application et en récupérer la statistique.Appel de la ligne de commande à partir de l'application .NET

Je l'ai fait, mais il manque quelque chose:

ProcessStartInfo psf = new ProcessStartInfo("cmd.exe", "/C time"); 
psf.WindowStyle = ProcessWindowStyle.Hidden; 
psf.RedirectStandardOutput = true; 
psf.UseShellExecute = false; 
psf.CreateNoWindow = true; 
Process p = Process.Start(psf); 
StreamReader sr = p.StandardOutput; 
p.WaitForExit(); 

Quel est le problème?

+0

'cmd/c time' attend l'entrée utilisateur. Il ne se fermera pas à moins que vous fournissiez des données. Dans votre cas, vous masquez la fenêtre de commande. Cela donne l'impression qu'une entrée est en attente dans une fenêtre cachée. que voulez-vous que le code fasse? – shahkalpesh

+0

Je ne veux pas changer l'heure seulement pour l'obtenir à partir de cette application –

+1

Ne pourriez-vous pas utiliser 'DateTime.Now'? – shahkalpesh

Répondre

2

Essayez de passer "/ c time/t" au lieu de "/ c time".

+0

Oui, j'ai les données. Qu'est-ce que/t fait? Comment puis-je obtenir les milisecondes? –

+0

Comme indiqué ci-dessus, sans/t, la commande demande une entrée. Mais je ne pense pas que la commande "time" supporte les milisecondes. Cela a également été dit auparavant, mais pourquoi ne pas simplement utiliser DateTime.Now à la place? –

+0

Je dois vérifier les différences entre cette option et l'objet DateTime et une autre chose. Merci –

1

Pour obtenir le temps du système, je vous recommande d'utiliser la structure DateTime:

string time = DateTime.Now.ToString("hh:mm:ss.fff"); 
Console.WriteLine(time); 
+0

Je dois utiliser shell et l'heure et pas l'objet datewtime –

Questions connexes