Problèmes de .BAT en C#
Résolu
clem285
Messages postés
280
Date d'inscription
Statut
Membre
Dernière intervention
-
clem285 Messages postés 280 Date d'inscription Statut Membre Dernière intervention -
clem285 Messages postés 280 Date d'inscription Statut Membre Dernière intervention -
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 :
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 :
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.
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 :
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 :
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.
A voir également:
- Problèmes de .BAT en C#
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- .Txt to .bat ✓ - Forum Logiciels
- Txt to bat ✓ - Forum Autoit / batch
- Bouchou ka bat traduction ✓ - Forum traduction
3 réponses
Alors, j'avance petit à petit.
lorsque mon fichier bat ne contient que :
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.
lorsque mon fichier bat ne contient que :
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.
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.
J'ai crée un lecteur réseau.
puis j'y cré mon fichier.
et je supprime le lecteur réseau.
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);
}
}
Je fais une copie en batch car lorsque j'essaye de créer mon fichier directement dans \\192.168.1.7\config_files, je n'ai pas les droits.
je suppose que tu fais référence à System.IO.File.Copy();
c'est vrai que je n'ai pas essayé. peut ton le faire sur le réseau ? Et en rentrant mon user et mdp ?
https://social.msdn.microsoft.com/Forums/fr-FR/e1786c18-e089-458d-8239-df97e659fbb2/copie-de-fichiers-sur-rseaux-avec-authentification?forum=visualcsharpfr