[R] Pb de script avec la commande Run

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

[R] Pb de script avec la commande Run

#1

Message par AutoITbnf »

Salut tout le monde :)

Voila, j'ai un soucis avec un script tout bête mais qui pose problème.

Run("Format.com h: /v:test /FS:FAT32 /X /Q <rep")

Cette commande permet d'automatiser un formatage mais la syntaxe fonctionne en mode cmd mais dans le script, le <rep est rejeté sans aucunes erreurs.
le fichier rep contient les réponses à la commande format sous cmd.
Savez vous pourquoi ?

Merci de votre aide.
Modifié en dernier par Tlem le dim. 12 oct. 2008 23:42, modifié 2 fois.
Raison : Balises
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [..] Pb de script avec la commande Run

#2

Message par Vins83 »

Tu as essayé avec @ComSpec...

Run(@ComSpec & " Format.com h: /v:test /FS:FAT32 /X /Q <rep")

++ Vins
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

Re: [..] Pb de script avec la commande Run

#3

Message par AutoITbnf »

Merci

J'ai essayé mais j'ai une fenêtre cmd qui s'ouvre et qui reste vierge. Puis, plus rien.

:?
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

Re: [..] Pb de script avec la commande Run

#4

Message par AutoITbnf »

Salut :)

Voila, j'ai trouvé une solution de contournement.

Code : Tout sélectionner

; Script permettant de formater les supports amovibles USB
$variable = InputBox("Question", "Veuillez saisir la lettre correspondant au support USB à formater", "", "")
If $variable = "a" or $variable = "b" or $variable = "c" or $variable = "d" or $variable = "" Then
    MsgBox(8192, "VERIFICATION", "Vous ne pouvez pas effectuer cette opération")
    Else
    $variable = " " & $variable & ":" 
    $parametres = "format.com "& $variable & " /v:dsi /FS:FAT32 /X /Q < d:\rep.txt"
    MsgBox(8192, "VERIFICATION", "Attention, formatage du volume "& $variable)
    ;RunAsWait("xxxxx", @LogonDomain , "xxxx", 0, "label.exe "& $variable & " dsi", @SW_HIDE)
    ShellExecutewait("label.exe", $variable & "dsi","","", @SW_HIDE)
    MsgBox(8192, "INFORMATION VOLUME TRAITE"& "-" & $variable & "-", "Pour information, le disque sera formaté en NTFS.")
    $file = FileOpen("d:\lance.cmd", 2)
    FileWrite($file, $parametres)
    FileClose($file)
    $file1 = FileOpen("d:\rep.txt", 2)
    FileWrite($file1, @CRLF)
    FileWrite($file1, @CRLF)
    FileClose($file1)
    ;RunAswait("xxxxxxxx", @LogonDomain , "xxxxx", 0, "lance.cmd", @SW_HIDE)
    ShellExecutewait("d:\lance.cmd", "","","", @SW_HIDE )
    MsgBox(64, "OPERATION TERMINEE", "Le formatage du volume"& $variable & " est terminé.")
    FileDelete("d:\lance.cmd")
    FileDelete("d:\rep.txt")
EndIf
En fait, l'idée est de créer la commande et non pas de l'executer.

A+ :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Pb de script avec la commande Run

#5

Message par Tlem »

Avec AutoIt, il y à certaines actions qui sont plus simple que la ligne de commande.

Code : Tout sélectionner

DriveGetDrive ( "type" ) ou DriveGetType ( "path" )
DriveSetLabel ( "path", "label" )

PS : Vous pourriez automatiser votre commande Format comme ceci :

Code : Tout sélectionner

Echo o|Format.com h: /v:test /FS:FAT32 /X /Q
Ce qui nous donne sous AutoIt :

Code : Tout sélectionner

RunWait(@ComSpec & " /c " & "Echo o|Format.com h: /v:test /FS:FAT32 /X /Q")
Attention aussi de contrôler la taille du média car si le média est un disque ou une clé USB (à contrôler aussi) de plus de 32 Go, vous aurez quelques petits problème avec la FAT32.
Limitations de la FAT32

Techniques

* taille maximale d'un fichier : 4 Go
* taille maximale de la partition : 8 To (en théorie)
* nombre de fichiers maximum : env. 268 000 000.

* Sous Windows XP / Vista le formatage en FAT32 est limité à 32 Go (si vous choisissez une valeur supérieure, seul le NTFS vous sera proposé). Bien qu'au premier abord la commande "format" de la ligne de commande ne paraisse pas posséder pas cette restriction, elle échoue aussi (après un certain temps passé à formater le volume).
Pour outrepasser cette limitation, utilisez un utilitaire tel que "Fat32Format.exe" par exemple, ou utilisez le NTFS.

Cela dit, dans votre utilitaire il serait bien de proposer les deux choix.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

Re: [R] Pb de script avec la commande Run

#6

Message par AutoITbnf »

Merci pour l'astuce :wink: , je vais essayer. Mais ce qui bloquait était le signe "<" dans la commande. Pas la commande format. Avez vous essayé de l'inclure ? Le résultat est que la commande n'est pas executée. Bizarre !

Pour info, ce script permet a des utilsateurs n'ayant pas les droits de formater un disque externe usb a cause des GPO sous AD, de le faire par l'intermédiaire de ce script. Avec les précautions qui s'imposent. D'ailleurs, pour la partie affichage du contenu avant formatage, je souhaiterais pouvoir autoriser l'utilisateur a parcourir le contenu avant de décider de l'action. Mais dans l'exemple que j'ai pris, on ne peut que afficher. Si vous avez une idée .. :)

Aujourd'hui, j'ai peaufiné le script. Voila le résultat:


► Afficher le texte
Modifié en dernier par ani le mer. 24 juin 2009 05:32, modifié 2 fois.
Raison : Ajout des balises de code
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Pb de script avec la commande Run

#7

Message par Tlem »

Personnellement, je ferais la liste des médias amovibles avec DriveGetDrive ("REMOVABLE"), puis je mettrais tout ça dans un combo.
Admettons que $Drv contienne la lettre de lecteur à traiter :
Ensuite en fonction du choix de l'utilisateur, je contrôlerais la taille du média avec DriveSpaceTotal ($Drv) et si le résultat est supérieur à 32 Go prévenir l'utilisateur que ce n'est peut être pas une clé USB ...
Ensuite une petite vérification du contenu du média avec FileFindFirstFile ($Drv & "\*.*").
Contrôle de la variable @error. Si égale à 1 alors le dossier est vide et on continue, sinon : Voulez-vous afficher le contenu du média $Drv, puis selon les choix, faire le reste du script.

PS : n'oubliez pas de mettre les balise de code (Ça m'évitera de le faire).
PS2 : Allez faire un tour ici pour voir comment construire un script.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

Re: [R] Pb de script avec la commande Run

#8

Message par AutoITbnf »

Ok merci pour ces tuyaux :D . Je vais peaufiner tout ça. Je suis un ancien développeur/bricoleur avec kix32. Donc quelques restes mais un peu en bordel; c'est ça ??

Merci encore :wink:
AutoITbnf
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 11 oct. 2008 13:44
Status : Hors ligne

Re: [R] Pb de script avec la commande Run

#9

Message par AutoITbnf »

Ah oui, juste un truc. Certains disques USB ne sont pas vus comme 'removable' mais comme disques locaux :( donc a utiliser avec des pincettes. :wink:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Pb de script avec la commande Run

#10

Message par Tlem »

Heuuu ha bon !!!
Comment Windows peut-il voir un disque USB, en tant que disque fixe !!! :shock: :shock: :shock:

Si cela peut être exact, il faut peut-être essayer avec :

Code : Tout sélectionner

DriveGetType ("path")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre