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.