Espace dans une variable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
knlap
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mar. 14 févr. 2017 16:46
Status : Hors ligne

Espace dans une variable

#1

Message par knlap »

Bonjour,

Je suis débutant en AutoIt et j'essaie de créer un script avec une interface graphique me permettant d'installer des imprimantes réseaux sur des postes de mon domaine. J'utilise PSExec pour l'installation à distance.

L'interface:
Image

Voici le script:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$FMimp = GUICreate("Imprimantes", 260, 134, 192, 124)
$ITpos = GUICtrlCreateInput("", 24, 48, 100, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_UPPERCASE))
$LLpos = GUICtrlCreateLabel("Poste", 24, 16, 31, 17)
$LLimp = GUICtrlCreateLabel("Imprimante", 136, 16, 55, 17)
$COimp = GUICtrlCreateCombo("", 136, 48, 100, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
   GUICtrlSetData(-1, "Bureau Achats|Bureau Compta Facture|Bureau Compta M602", "Bureau Achats")
   GUISetState(@SW_SHOW)
$BNval = GUICtrlCreateButton("Installer", 136, 88, 100, 21)
$CXdef = GUICtrlCreateCheckbox("Defaut", 24, 88, 100, 21)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $BNval
         Run('.\PsExec.exe \\' & GUICtrlRead($ITpos) & ' rundll32 printui,PrintUIEntry /in /n\\serveur\' & GUICtrlRead($COimp))
   EndSwitch
WEnd
Le problème est à la ligne "Run('.\PsExec.exe \\' & GUICtrlRead($ITpos) & ' rundll32 printui,PrintUIEntry /in /n\\serveur\' & GUICtrlRead($COimp))"
Certaines imprimantes ont des noms avec espace et du coup le "GUICtrlRead($COimp)" renvoi que la partie avant l'espace.

Exemple pour l'imprimante "Bureau Achats":
Image

Si quelqu'un à une solution, merci d'avance. :)
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: Espace dans une variable

#2

Message par parazitenew »

Bonsoir,
GUICtrlRead($COimp) renvoie correctement la valeur, il suffit de tester avec msgbox() pour le constater, le souci est ailleurs, soit au niveau de la commande Run, soit au niveau du programme PsExec.exe soit c'est juste un bug affichage.

Est ce que l'installation se déroule normalement?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Espace dans une variable  

#3

Message par jguinch »

Il faut utiliser les doubles quotes pour les noms qui contiennent des espaces :
Run('.\PsExec.exe "\\' & GUICtrlRead($ITpos) & '" rundll32 printui,PrintUIEntry /in /n"\\serveur\' & GUICtrlRead($COimp) & '"')
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
knlap
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mar. 14 févr. 2017 16:46
Status : Hors ligne

Re: Espace dans une variable

#4

Message par knlap »

Merci parazitenew pour ta réponse mais la solution de jguinch fonctionne à merveille. Encore merci !
Pourrais-tu juste prendre le temps de m'expliquer cette concaténation, j'ai toujours un peu de mal avec ça.

Et pour mieux faire, est-il possible de faire l'instalaltion des imprimantes à distance directement avec AutoIt sans avoir à passer par PSExec ?
Répondre