6
votes

système () à c # sans appeler cmd.exe

Comment traduire le système ("") sur c # sans appeler cmd.exe? edit: j'ai besoin de jeter quelque chose comme "dir"

c c# cmd

0 commentaires

6 Réponses :


2
votes

Je ne sais pas si je comprends votre question. Cherchez-vous processus.start ?


0 commentaires

7
votes

Si j'ai bien compris votre question, vous recherchez processus.start .

See Cet exemple (de la DOCS): P>

// Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009.
var files = from f in DirInfo.EnumerateFiles()
           where DirInfo.CreationTimeUtc < StartOf2009
           select f;

// Show results.
foreach (var f in files)
{
    Console.WriteLine("{0}", f.Name);
}
. Vous pouvez l'utiliser pour créer votre propre liste de répertoires. Par exemple (également de la DOCS): P>
// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
    // url's are not considered documents. They can only be opened
    // by passing them as arguments.
    Process.Start("IExplore.exe", "www.northwindtraders.com");

    // Start a Web page using a browser associated with .html and .asp files.
    Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
    Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
 }


3 commentaires

Et vous devriez éviter le système () en premier lieu de votre application C d'origine C.


Dir n'était qu'un exemple que je veux simuler cmd.exe


Quoi que vous essayiez de réaliser avec le système, il existe presque certainement un moyen plus propre de le faire directement de C / C #. système est une fonction à éviter.




1
votes

Est-ce que vous réellement veux l'équivalent? Vous ne pouvez pas dépendre de ce que vous essayez exactement de faire.

Par exemple, appelant Copier de la ligne de commande a un équivalent C #, fichier.copy , pour dir il y a un tout répertoire classe pour obtenir des informations (ce sont un rapide 2 sur des milliers d'exemples). Selon ce que vous avez après, C # a probablement une bibliothèque / fonction pour la commande spécifique que vous essayez d'exécuter, généralement une méthode plus robuste également, au lieu d'un gestionnaire mondial.

Si le GLOBAL "INVOKE" est ce que vous êtes après, alors comme les autres réponses suggèrent, à l'aide de system.diagnostiques.process classe est votre meilleur pari.


0 commentaires

2
votes
I need to throw something like "dir"
If you need to run DIR, then you need to call cmd.exe as dir is internal to cmd.exe

0 commentaires

1
votes

Si vous souhaitez exécuter une commande de ligne de commande (cmd.exe), telle que "dir" ou "temps" ou "mkdir", transmettez la commande sous forme d'argument à cmd.exe avec le drapeau / c. Par exemple, P>

cmd.exe /C mkdir "New Dir"


0 commentaires