[R] Remplacer une chaîne de caractère

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Kreg
Niveau 1
Niveau 1
Messages : 11
Enregistré le : jeu. 06 juin 2013 10:00
Status : Hors ligne

[R] Remplacer une chaîne de caractère

#1

Message par Kreg »

Bonjour à tous,

Je me suis inspiré d'un script trouvé sur autoitscript.com pour manipuler diskpart.
L'objectif étant de livré à des techniciens un outil simple de création de clé USB bootable / synchronisation avec les serveurs de déploiement.
J'ai un quack sur la partie diskpart pour les OS Français, à cause de "Disque" au lieu de "Disk".

J'ai essayé avec un bête StringReplace. Mais ce n'est pas bon. Je débute ;-)
En exemple c'est plus parlant

Code : Tout sélectionner

Func DskPrt()
    Local $Menu1, $n1, $n2, $Msg, $Menustate, $Menutext, $File
    Local $Line, $Array = _StringExplode(FileRead(@TempDir & '\lstdsk.txt'), @LF)
    For $i = 0 To UBound($Array) - 1
        If StringRegExp($Array[$i], '(?i)Disk [\d]+') Or StringRegExp($Array[$i], '(?i)Disque [\d]+') Then $Line &= $Array[$i] & '|'
    Next
    $Line = StringRegExpReplace($Line, '[\s|]*$', '') 
    GUICreate('Make USB Bootable', 260, 250) 
    GUICtrlCreateLabel('Disque disponible : ', 22, 10, 100)
    $n1 = GUICtrlCreateList('', 20, 30, 215, 150)
    GUICtrlSetData(-1, $Line)
    $n2 = GUICtrlCreateButton('Selectionner le disque à rendre bootable', 28, 200, 200)
    GUICtrlSetState(-1, $GUI_FOCUS) 
    GUISetState() 

    Do
        $Msg = GUIGetMsg()
        If $Msg = $n2 Then
            Local $Disk1 = StringRegExpReplace(GUICtrlRead($n1), '(?i)^.*(Disk [\d]+).*$', '$1')
            Local $Disk= StringReplace ($Disk1, "disque", "disk")
            Local $iMsgBoxAnswer
            $iMsgBoxAnswer = MsgBox(262452, 'Le disque choisis est le suivant: ' & $Disk, 'Attention le disque va être formatté : ' & $Disk & '!')
L'objectif étant d'avoir "Le disque choisis est le suivant: Disk x" --> via la variable $Disk
Parfait sur mes OS Anglais tout fonctionne. Sur des OS Français, il indique "Le disque choisis est le suivant: disque x" Ce qui échoue le reste des actions diskpart.
Du coup j'ai rajouté

Code : Tout sélectionner

Local $Disk= StringReplace ($Disk1, "disque", "disk")
Le résultat est "Le disque choisis est le suivant: Disk x En Ligne ........" En gros il me colle trop d'informatons !? Je ne comprends pas pk.

Je pense que c'est simple, mais je bloque :)
Une idée amis autoscriptiens ?
Merci !!

Kreg
Modifié en dernier par Kreg le lun. 10 juin 2013 19:16, modifié 1 fois.
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#2

Message par lesolutionneur »

Sais-tu qu'un logiciel s'appelant Rufus permet de créer des clé USB bootables : pourquoi veux-tu en recréer un par toi-même ?
http://rufus.akeo.ie/
Kreg
Niveau 1
Niveau 1
Messages : 11
Enregistré le : jeu. 06 juin 2013 10:00
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#3

Message par Kreg »

lesolutionneur a écrit :Sais-tu qu'un logiciel s'appelant Rufus permet de créer des clé USB bootables : pourquoi veux-tu en recréer un par toi-même ?
http://rufus.akeo.ie/
En effet il y a Rufus, et pleins d'autres outils qui existe qui sont sympa pour la création de clé bootable.

Mon ambition n'est pas de faire un outil tel que Rufus, mais bien plus simple mais qui m'apporte surtout d'autres fonctionnalités propre à mon infra.
Synchronisation avec mes SCCM, check de la version du Master, etc...
Tout fonctionne correctement, sauf le cas de l'OS Français pour la partie rendre bootable.
La tu pourrais me répondre pourquoi des techniciens utilise des OS Français ? Malheureusement j'ai beau me demander pourquoi, je n'ai pas de réponse valable.
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#4

Message par lesolutionneur »

T'as dit des techniciens, pas des ingénieurs !
Sauf erreur de ma part, l'anglais n'est pas requis pour tous les techniciens :)
Mais bon là on s'écarte un peu du sujet !

(Sinon tu peux automatiser Rufus)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#5

Message par jguinch »

Salut.
Peut être comme ça :

Code : Tout sélectionner

If $Msg = $n2 Then
    $disk = StringRegExpReplace( GUICtrlRead($n1), "(\s+)(Disque|Disk)(\s+)([\d])(.*)", "Disk $4")
    MsgBox(262452, 'Le disque choisis est le suivant: ' & $Disk, 'Attention le disque va être formatté : ' & $Disk & '!')
EndIf
Juste une remarque : tu pourrais peut-être améliorer un peu en n'affichant que les disques de type USB (histoire que le tech ne fasse par une boulette)...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Kreg
Niveau 1
Niveau 1
Messages : 11
Enregistré le : jeu. 06 juin 2013 10:00
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#6

Message par Kreg »

jguinchard a écrit :Salut.
Peut être comme ça :

Code : Tout sélectionner

If $Msg = $n2 Then
    $disk = StringRegExpReplace( GUICtrlRead($n1), "(\s+)(Disque|Disk)(\s+)([\d])(.*)", "Disk $4")
    MsgBox(262452, 'Le disque choisis est le suivant: ' & $Disk, 'Attention le disque va être formatté : ' & $Disk & '!')
EndIf
Juste une remarque : tu pourrais peut-être améliorer un peu en n'affichant que les disques de type USB (histoire que le tech ne fasse par une boulette)...
Hello !
Merci ça fonctionne impec :)
Excellente remarque également, autant éviter les bêtises en effet. Je vais voir comment je peux adapter mon histoire pour exclure les fixe drive.
Merci encore !

Kreg
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Remplacer une chaîne de caractère

#7

Message par jguinch »

Salut.
Perso, plutôt que d'exclure les disque locaux, j'essaierais de me concentrer sur les lecteurs USB.
Comme tu le sais sans doute, on peut faire en sorte qu'un disque USB soit vu comme un disque local, donc tu risques de tomber sur ce cas de figure...

J'avais fait ça à un moment :
► Afficher le texte
N'oublie pas de passer ton sujet en résolu...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre