Bonjour,
Je suis en train de créer une application afin d'installer automatiquement des imprimantes sur les agences de mon entreprise. Dans ce contexte, je crée un fichier bat (pour la création de l'imprimante avec les ports, marques, modèles et adresses ip correspondantes) à partir de deux fichiers txt. Jusqu'ici pas de soucis, la création se fait très bien et le script marche.
Mon problème survient juste après: je dois en effet créer un package EXE pour pouvoir déployer plus facilement les imprimantes et ainsi éviter de transporter des scripts pour toutes les agences. Et c'est ici que je vois qu'en lançant mes commandes shell pour pouvoir créer le package que le script bat se lance tout seul après l'exécution de commandes n'ayant pas à voir avec lui . D'ailleurs les commandes fonctionnent bien et crééent le package (qui lui ne fonctionne pas aussi du coup).
Partie où j'appelle les fonctions, avant ce ne sont que des conditions (nombres d'imprimantes tout ça tout ça)
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 Sub ... Else imprimante_1 = CBox_1.SelectedItem.ToString() adresseIp_1 = TB_ip1.Text ecritureFichier(agence, imprimante_1, adresseIp_1, dossier_1, fichierInf_1, driverImpri_1) MsgBox("fichier Bat créée") package(agence) End If End Sub
Fonction d'écriture du Bat
Et ma fonction d'appel aux commandes shell
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 Sub ecritureFichier(ByVal agencia As String, ByVal imprimantia As String, ByVal ip_1 As String, ByVal dossier_1 As String, ByVal fichierInf_1 As String, ByVal driver_1 As String, Optional ByVal imprimantia_2 As String = "", Optional ByVal ip_2 As String = "", Optional ByVal dossier_2 As String = "", Optional ByVal fichierInf_2 As String = "", Optional ByVal driver_2 As String = "", Optional ByVal imprimantia_3 As String = "", Optional ByVal ip_3 As String = "", Optional ByVal dossier_3 As String = "", Optional ByVal fichierInf_3 As String = "", Optional ByVal driver_3 As String = "") Dim arg_fichier As String = agencia & "Imp" Dim fichier As New StreamWriter("C:\Users\frlecastel\Documents\Projet imprimante\" & arg_fichier & ".bat") fichier.WriteLine("@echo off") fichier.WriteLine("Set agence=" & agencia) fichier.WriteLine("Set imprimante=" & imprimantia) fichier.WriteLine() fichier.WriteLine("echo Installation des imprimantes") fichier.WriteLine("echo AGENCE : %agence% - ") fichier.WriteLine() fichier.WriteLine("cd %CD%") fichier.WriteLine("echo Installation des imprimantes...") fichier.WriteLine("echo ""...""") fichier.WriteLine() fichier.WriteLine("echo Suppression des ports existants") fichier.WriteLine("rundll32 printui.dll,PrintUIEntry /dl /n" & agence & "NP01") fichier.WriteLine("%windir%\system32\cscript.exe ""portmgr.vbs"" -d -p IP_" & agence & "NP01") fichier.WriteLine() fichier.WriteLine() fichier.WriteLine("echo Installation des IP_PORTS") fichier.WriteLine("echo Veuillez patientez....") fichier.WriteLine("REGSVR32.EXE /S prnadmin.dll") fichier.WriteLine("echo Imprimante: " & imprimantia) fichier.WriteLine("%windir%\system32\cscript.exe ""portmgr.vbs"" -a -c """" -p IP_%agence%NP01 -h " & ip_1 & " -t raw -n 9100 -md") fichier.WriteLine("echo Veuillez patienter....") fichier.WriteLine("rundll32 printui.dll,PrintUIEntry /if /Y /b ""%agence%NP01"" /f ""%CD%\Drivers\" & dossier_1 & "\" & fichierInf_1 & """ /r " & Chr(34) & "IP_%agence%NP01" & Chr(34) & " /m """ & driver_1 & """ /z") fichier.WriteLine() fichier.WriteLine() fichier.WriteLine() fichier.WriteLine("echo Installation des imprimantes du site %agence% terminée.") fichier.Close() End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub package(ByVal agencia As String) Dim arg_fichier = agencia & "Imp" Shell("C:\Windows\System32\cmd.exe /K cpau -u user -p password -ex " & arg_fichier & ".bat -enc -file " & arg_fichier & ".job") Shell("C:\Windows\System32\cmd.exe /K cpau -dec -file " & arg_fichier & ".job -lwp") Shell("C:\Windows\System32\cmd.exe /K 7z a data.7z ./") Shell("C:\Windows\System32\cmd.exe /K copy /b 7zsd.sfx + config.txt + data.7z " & arg_fichier & ".exe") End Sub
Voilà donc si quelqu'un peut m'expliquer pourquoi mon bat s'exécute tout seul alors que si je commente les commandes shell il n'y a pas de soucis je lui en saurai très reconnaissant .
Merci à tous ceux qui peuvent m'apporter leur aide.
Partager