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 :

Problèmes de .BAT en C#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Problèmes de .BAT en C#
    Bonjour à tous !

    J'ai déployé mon application sur un serveur : te-tst1
    dessus, dans le dossier C:\inetpub\wwwroot\CBConfig\Bat\config\ je cré un fichier, disons, toto.txt
    ce fichier, je dois le copier dans le dossier qui est sur un autre serveur : 192.168.1.7 dans le dossier \\192.168.1.7\config_files

    du coup, j'ai fait le code suivant dans un.bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    net use L: \\192.168.1.7\config_files /USER:user mdp /persistent:no
    XCOPY /E  C:\inetpub\wwwroot\CBConfig\Bat\config\*.*  L: /Y
    net use L: /delete /Y
    je cré un lecteur réseau, puis je copie le contenu du dossier dans le lecteur créé, et je déconnecte le lecteur.

    code dans visual studio pour appelé le fichier :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public static void ExecuteBatch(string nomFichier)
            {
                try
                {
                    logger.Debug("nomFichier : " + nomFichier);
     
                    Process P = new Process();
     
                    HicefCBEntities db = new HicefCBEntities();
     
                    var theParam = (from param in db.Parametres
                                    where param.reference == nomFichier
                                    select param).FirstOrDefault();
     
                    logger.Debug("theParam.libelle : " + theParam.libelle);
     
                    ProcessStartInfo processInfo;
                    Process process;
     
                    processInfo = new ProcessStartInfo(theParam.libelle, "/c ");
                    processInfo.Verb = "runas";
                    processInfo.CreateNoWindow = true;
                    processInfo.UseShellExecute = false;
                    // *** Redirect the output ***
                    processInfo.RedirectStandardError = true;
                    processInfo.RedirectStandardOutput = true;
     
                    process = Process.Start(processInfo);
     
                    logger.Debug("processInfo : " + processInfo);
                    logger.Debug("process : " + process);
     
                    process.WaitForExit(3000);
     
                    process.Close();
     
                }
                catch (Exception e)
                {
                    logger.Error(e.Message);
                }
            }
    mon paramètre permet de récupérer le chemin du fichier bat.

    contenu de mon fichier log :

    2016-07-22 15:10:12.2000|DEBUG|HicefCB.Controllers.CBController|test
    2016-07-22 15:10:12.2000|DEBUG|HicefCB.Controllers.CBController|test
    2016-07-22 15:10:36.9900|DEBUG|HicefCB.Controllers.FichierController|config
    2016-07-22 15:10:36.9900|DEBUG|HicefCB.Controllers.FichierController|config
    2016-07-22 15:10:36.9900|DEBUG|HicefCB.Controllers.Batch|nomFichier : config_files.bat
    2016-07-22 15:10:36.9900|DEBUG|HicefCB.Controllers.Batch|nomFichier : config_files.bat
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|theParam.libelle : C:\inetpub\wwwroot\CBConfig\Bat\config_files.bat
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|theParam.libelle : C:\inetpub\wwwroot\CBConfig\Bat\config_files.bat
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|processInfo : System.Diagnostics.ProcessStartInfo
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|processInfo : System.Diagnostics.ProcessStartInfo
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|process : System.Diagnostics.Process (cmd)
    2016-07-22 15:10:37.0056|DEBUG|HicefCB.Controllers.Batch|process : System.Diagnostics.Process (cmd)

    le fichier log du bat est toujours vide, mais lorsque je l’exécute à la main, ça fonctionne et ça me donne ça :

    C:\inetpub\wwwroot\CBConfig\Bat\config\toto.txt
    1 File(s) copied
    L: was deleted successfully.

    Voilà, si vous avez des questions, n'hésitez pas.

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Alors, j'avance petit à petit.
    lorsque mon fichier bat ne contient que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XCOPY /E C:\inetpub\wwwroot\CBConfig\Bat\config\*.* C:\inetpub\wwwroot\CBConfig\Bat\dossiertest\ /Y
    la mon fichier bat est bien appelé et fonctionne.
    Je pense que c'est la création du lecteur réseau qui doit planter. Est-ce un problème de droit ? car mon appli fonctionne avec le user system normalement.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bon, au final, j'ai fait autrement.
    J'ai crée un lecteur réseau.
    puis j'y cré mon fichier.
    et je supprime le lecteur réseau.

    voici le code si certains sont dans la panade.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
            public static void connexionReseau(string nomFichier)
            {
                try
                {
     
                    Process P = new Process();
                    HicefCBEntities db = new HicefCBEntities();
     
                    var theParam = (from param in db.Parametres
                                    where param.reference == nomFichier
                                    select param).FirstOrDefault();
     
                    ProcessStartInfo processInfo;
                    Process process;
                    processInfo = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe", "/c " + "net use L: "+theParam.libelle+" /USER:user mdp /persistent:no");
                    processInfo.Verb = "runas";
                    processInfo.CreateNoWindow = true;
                    processInfo.UseShellExecute = false;
                    // *** Redirect the output ***
                    processInfo.RedirectStandardError = true;
                    processInfo.RedirectStandardOutput = true;
     
                    process = Process.Start(processInfo);
     
                    process.WaitForExit(3000);
     
                    process.Close();
     
                }
                catch (Exception e)
                {
                    logger.Error(e.Message);
                }
            }
            public static void deconnexionReseau()
            {
                try
                {
                    Process P = new Process();
     
                    HicefCBEntities db = new HicefCBEntities();
                    ProcessStartInfo processInfo;
                    Process process;
                    processInfo = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe", "/c " + "net use L: /delete /Y ");
                    processInfo.Verb = "runas";
                    processInfo.CreateNoWindow = true;
                    processInfo.UseShellExecute = false;
                    // *** Redirect the output ***
                    processInfo.RedirectStandardError = true;
                    processInfo.RedirectStandardOutput = true;
     
                    process = Process.Start(processInfo);
     
                    process.WaitForExit(3000);
     
                    process.Close();
     
                }
                catch (Exception e)
                {
                    logger.Error(e.Message);
                }
            }

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

Discussions similaires

  1. Problème fichier bat
    Par leTiDevDu54 dans le forum Windows
    Réponses: 2
    Dernier message: 01/09/2012, 09h58
  2. [Inno Setup] Problème lancement bat
    Par Isa31 dans le forum Outils
    Réponses: 5
    Dernier message: 18/04/2012, 08h58
  3. problème mémoire .bat
    Par chrass dans le forum Exécution et industrialisation
    Réponses: 14
    Dernier message: 06/07/2011, 15h17
  4. Problème espace .bat
    Par sacan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 07/09/2010, 22h53
  5. Simple problème en BAT
    Par _SamSoft_ dans le forum Windows
    Réponses: 6
    Dernier message: 13/05/2007, 17h59

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