Page 1 sur 1
[R] Pb de script avec la commande Run
Posté : sam. 11 oct. 2008 13:47
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.
Re: [..] Pb de script avec la commande Run
Posté : sam. 11 oct. 2008 17:01
par Vins83
Tu as essayé avec @ComSpec...
Run(@ComSpec & " Format.com h: /v:test /FS:FAT32 /X /Q <rep")
++ Vins
Re: [..] Pb de script avec la commande Run
Posté : dim. 12 oct. 2008 16:20
par AutoITbnf
Merci
J'ai essayé mais j'ai une fenêtre cmd qui s'ouvre et qui reste vierge. Puis, plus rien.

Re: [..] Pb de script avec la commande Run
Posté : dim. 12 oct. 2008 18:29
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+

Re: [..] Pb de script avec la commande Run
Posté : dim. 12 oct. 2008 23:24
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 :
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.
Re: [R] Pb de script avec la commande Run
Posté : lun. 13 oct. 2008 13:38
par AutoITbnf
Merci pour l'astuce

, 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
Code : Tout sélectionner
; Script permettant de formater les supports amovibles USB
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIListBox.au3>
#include <GuiConstantsEx.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
$Debug_LB = False ; Check ClassName being passed to ListBox functions, set to True and use a handle to another control to see it work
$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(64, "VERIFICATION", "Vous ne pouvez pas effectuer cette opération")
exit
EndIf
_Main()
Func _Main()
Local $hListBox
; Create GUI
GUICreate("Contenu du volume " & $variable & " (Appuyez sur Echap pour poursuivre)", 400, 296,-1,-1,$WS_EX_TRANSPARENT)
$hListBox = GUICtrlCreateList("", 2, 2, 396, 296)
GUISetState()
; Add files
_GUICtrlListBox_BeginUpdate($hListBox)
_GUICtrlListBox_ResetContent($hListBox)
_GUICtrlListBox_InitStorage($hListBox, 100, 4096)
_GUICtrlListBox_Dir($hListBox, $variable & ":" & "\*.*", $DDL_DIRECTORY)
_GUICtrlListBox_Dir($hListBox, "", $DDL_DIRECTORY)
_GUICtrlListBox_EndUpdate($hListBox)
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
$variable = " " & $variable & ":"
$parametres = "format.com "& $variable & " /v:dsi /FS:NTFS /X /Q < d:\rep.txt"
$msgbox = MsgBox(1, "VERIFICATION", "Attention, formatage du volume "& $variable & " Etes-vous sur ?")
if $msgbox="2" Then
Exit
Else
RunAsWait("xxxx", @LogonDomain , "xxxx", 0, "label.exe"& $variable & "dsi",@SystemDir,@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, "dsi" & @CRLF)
FileWrite($file1, "o" & @CRLF)
FileClose($file1)
RunAswait("xxx", @LogonDomain , "xxxx", 0, "d:\lance.cmd",@SystemDir,@SW_HIDE)
MsgBox(64, "OPERATION TERMINEE", "Le formatage du volume"& $variable & " est terminé.")
FileDelete("d:\lance.cmd")
FileDelete("d:\rep.txt")
EndIf
Re: [R] Pb de script avec la commande Run
Posté : lun. 13 oct. 2008 21:48
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.
Re: [R] Pb de script avec la commande Run
Posté : mer. 15 oct. 2008 22:49
par AutoITbnf
Ok merci pour ces tuyaux

. 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

Re: [R] Pb de script avec la commande Run
Posté : mer. 15 oct. 2008 22:54
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.

Re: [R] Pb de script avec la commande Run
Posté : mer. 15 oct. 2008 23:48
par Tlem
Heuuu ha bon !!!
Comment Windows peut-il voir un disque USB, en tant que disque fixe !!!
Si cela peut être exact, il faut peut-être essayer avec :