IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] ouvrir et ecrire dans l'invite de commande


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut [C#] ouvrir et ecrire dans l'invite de commande
    Bonjour,

    Je cherche à développer un programme en .NET (C#), qui communique avec une autre application (PELICAN / InterPel).
    Mon programme en C# et PELICAN seront installés sur le même serveur.
    PELICAN est un logiciel qui sert à transférer des fichiers (sur un autre PELICAN) en utilisant le protocole CFT (Cross File Transfer).

    Auparavant, pour envoyer des commandes à PELICAN, les utilisateurs utilisaient des VBSCRIPT.
    On peut communiquer avec PELICAN directement en ligne de commande.
    Ces VBSCRIPT ouvraient un batch (création d'un batch avec Set objetShell = CreateObject(wscript.shell)) et écrivaient leur commande dedans via objetShell.Run "commande à exécuter".


    Je voudrais implémenter ça en C# donc je cherche une classe ou des méthodes qui puisse ouvrir un batch et écrire des commandes dans le batch.
    Quelqu'un sait-il comment faire ça en C# ?

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Si c'est pour ouvrir l'interpréteur de commandes et exécuter des commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Process process = new Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.Arguments = "/C dir *.*"; // Commande à exécuter
                process.StartInfo.UseShellExecute = false;
                process.Start();

  3. #3
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Merci

  4. #4
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Salut,

    J'essaye la classe process.
    Je veux faire un programme de test (une application console) qui ouvre un 2ème invite de commande où s'exécute la commande 'help'.

    Voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
     
    namespace TestProcess
    {
        class Program
        {
            static void Main(string[] args)
            {
     
                Run();
     
            }
     
            public static void Run()
            {
     
                Process p1 = new Process();
                p1.StartInfo.FileName = "cmd.exe";
                p1.StartInfo.Arguments = "help";
                p1.Start(); /* Cette instruction ouvre un invite de commande n°2 */
     
                /* Ces instructions s'exécutent dans la console n°1 */
                Console.WriteLine("bonjour");
                Console.Read();
     
            }
        }
    }
    Ma 1ere console (celle du programme) s'ouvre et affiche 'bonjour'.
    Une 2ème console s'ouvre mais la commande 'help' n'est pas exécutée..

    Quel est le problème ? Pourquoi la commande 'help' ne s'éxécute pas ?
    Je dois mal comprendre le fonctionnement de la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.StartInfo.Arguments = "help";


    [EDIT]
    A quoi sert exactement propriété UseShellExecute ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.StartInfo.UseShellExecute = true;
    Qu'est ce que ca change que je mette cette propriété à 'vrai' ou 'faux' ?
    [/EDIT]

    Merci de votre aide.

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Essais avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.StartInfo.Arguments = "/C help";

  6. #6
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Ok ca marche avec le '/C'. Merci.

    Et sinon, comment écrire plusieurs commande d'affilées ?
    Par exemple je veux exécuter la commande 'help' puis la commande 'pause' ?

    Et aussi pour la fonction de 'UseShellExecute'..? je comprends pas ce qui est indiqué dans la msdn.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir et ecrire dans un fichier txt
    Par lolo81 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 28/01/2011, 02h39
  2. Soucis pour ouvrir et ecrire dans un fichier
    Par PazaiFoG dans le forum Débuter
    Réponses: 7
    Dernier message: 18/11/2009, 21h15
  3. Ecrire et afficher de l'arabe dans l'invite de commande
    Par fafa624 dans le forum Windows XP
    Réponses: 14
    Dernier message: 02/07/2007, 12h38
  4. passage de paramètres dans l'invite de commande
    Par mr_neness dans le forum Langage
    Réponses: 10
    Dernier message: 18/11/2005, 15h01
  5. Ecrire dans l'invite de commande
    Par Joeleclems dans le forum MFC
    Réponses: 9
    Dernier message: 08/06/2005, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo