Page 1 sur 3
[R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 09:47
par Laddy
Bonjour à tous,
j'ai une petite question :
En batch nous pouvons glisser un ou des fichiers sur un exécutable compilé, grâce à %1 qui lance l'action demandé exemple déplacer des fichiers.
Peut on faire la même chose en autoit ?
Je glisses (drop and drag) mes fichiers sur l'exécutable, et exécute l'action choisi sans l'ouvrir ?
Merci
Bonne fête de Noël à tous
Laddy
Re: [..] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 10:12
par moutelous
Bonjour,
Ben, sachant que "$CmdLine[1]" remplace les variables du type "%1", oui ......
Re: [..] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 10:27
par Laddy
moutelous a écrit :Bonjour,
Ben, sachant que "$CmdLine[1]" remplace les variables du type "%1", oui ......
Bonjour moutelous,
$cmdLine j'ai regardé cette commande, et si j'ai bien compris elle permet de mettre un paramètre sur un executable.
"chemin\fichier.exe" /param par exemple que l'on peut taper dans démarrer -> executer
mais pour le drop and drag je ne vois pas comment faire, aurais tu un exemple ?
Genre je glisse un txt sur mon exe et il est déplacé dans Mes documents.
Re: [..] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 10:41
par FernandG
Bonjour,
Moutelous vous donnait la solution pourtant
Neanmoins, voici en exemple concret :
Code : Tout sélectionner
Dim $parametre
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
$parametre &= $i & " : " & $CmdLine[$i] & @CRLF
Next
MsgBox(64, "Information", "Nombre(s) de paramètre(s) : " & $CmdLine[0] & @CRLF & @CRLF & $parametre)
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
Compilez le et procèdez à un "drop & drag" de un ou plusieurs fichiers sur le fichier compilé.
Je pense que vous comprendrez mieux le fonctionnement
Bonne journée.
AutoItement.
Re: [..] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 10:51
par FernandG
Laddy a écrit :moutelous a écrit :mais pour le drop and drag je ne vois pas comment faire, aurais tu un exemple ?
Genre je glisse un txt sur mon exe et il est déplacé dans Mes documents.
Pour répondre à votre demande :
Code : Tout sélectionner
If $CmdLine[0] = 1 Then
If StringRight($CmdLine[1], 4) = ".txt" Then
FileCopy($CmdLine[1], @MyDocumentsDir, 1)
Else
MsgBox(16, "Information", "Erreur : " & $CmdLine[1] & " n'est pas un fichier "".txt"" !!!")
EndIf
EndIf
Exit
Exemple adapté à un seul fichier mais peut être adapté à souhait.
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 11:02
par Laddy
Merci FernandG
c'est exactement ce que je voulais. Un exemple concret.
Bonnes fêtes de fin d'année
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:20
par Laddy
Re,
Pourquoi me prend t il que le dernier fichier copié ?
Code : Tout sélectionner
If $CmdLine[0] Then
If StringRight($CmdLine[1], 4) = ".txt" Then
For $i = 1 To $CmdLine[1]
FileCopy($CmdLine[1], @MyDocumentsDir, 1)
Next
EndIf
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
Quel est mon erreur ?
Pour chaque paramètre copié le fichier ou les fichiers vers Mes documents
J'ai testé ceci aussi
Code : Tout sélectionner
If $CmdLine[0] Then
If StringRight($CmdLine[1], 4) = ".txt" Then
For $i = 1 To $CmdLine[1]
FileCopy($CmdLine[$i], @MyDocumentsDir, 1)
Next
EndIf
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
ça ne fonctionne plus
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:25
par zeshrek
3eme ligne, remplace
For $i = 1 To $CmdLine[1]
par
For $i = 1 To $CmdLine[0]
$CmdLine[1] est le 1er parametre de la ligne de commande, par contre si tu veux avoir le nombre de parametre passés (et donc les copier dans le cas de ton script) la boucle d'oit s'appuier sur le nombre de parametres passés, qui lui est stocké dans $CmdLine[0]
Edit : Attention, le if de la 2eme ligne ne rendra la copie possible que si le premier parametre passé est un fichier .txt
Donc comme je présume que tu veux copier tous les fichiers .txt dans ton rémertorie de documents, le script devrait donc etre :
Code : Tout sélectionner
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
If StringRight($CmdLine[$i], 4) = ".txt" Then
FileCopy($CmdLine[$i], @MyDocumentsDir, 1)
EndIf
Next
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:26
par Laddy
Bonjour Zeshrek force Orange,
J'ai testé sur les 2codes postés.
Le 1er : toujours qu'un fichier
le second : aucun fichier
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:27
par zeshrek
Et celui que je te met dans l'edit de ma réponse (j'étais en train de le poster quand tu as répondu)
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:28
par Laddy
Arf j'y étais presque effectivement mon for était mal placé.
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:31
par zeshrek
Classique erreur de débutant

Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 13:39
par Laddy
Oui, je vais compliquer la chose en créer des dossiers avant et déplacer d'autres fichiers ça promet...
Merci pour ta patience et tes explications.
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 14:18
par Laddy
Je suis vraiment une bille mais pourquoi ceci ne fonctionne pas
Si le paramètre à pour extension txt ou ini ou etc.... alors copier le fichier dans mes documents.
Je pense traduire mon français correctement en autoit cependant il me prend uniquement le second paramètre ini.
Code : Tout sélectionner
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
If StringRight($CmdLine[$i], 4) = ".txt" OR ".ini" Then
FileCopy($CmdLine[$i], @MyDocumentsDir &"\TXT", 1)
EndIf
Next
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
peut etre un problème de méthode
Merci d'avance à celui qui me répondra, vous m'aider beaucoup à progresser
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 14:33
par zeshrek
Normal, il y a une faute ligne 3
Ton if commence par évaluer si StringRight($CmdLine[$i], 4) = ".txt"
mettons que c'est effectivement un fichier txt, donc le résultat est true
ensuite il fait évalue true OR ".ini"
là ca veut rien dire donc résultat false, donc il passe au endif.
Tu pourrais faire :
If StringRight($CmdLine[$i], 4) = ".txt" OR StringRight($CmdLine[$i], 4) = ".ini" then
Mais alors bonjour si tu dois tester une demie douzaine d'extensions différentes, ta ligne serait vite incompréhensible.
Du coup il vaut mieux passer par un Swithc :
Code : Tout sélectionner
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
$extension = StringLower(StringRight($CmdLine[$i], 4)) ; on prend l'extension, et on la passe en minuscule
Switch $extension
Case ".txt", ".ini" ; ca te permet de mettre plusieurs possibilités, séparés par des vircules
FileCopy($CmdLine[$i], @MyDocumentsDir & "\TXT", 1)
Case ".doc", "docx" ; on prend les documents Word
FileCopy($CmdLine[$i], @MyDocumentsDir & "\Word", 1) ; par exemple si tu as fait un répertoire pour tes documents Word
Case ".xls", "xlsx" ; on prend les documents Excel
FileCopy($CmdLine[$i], @MyDocumentsDir & "\Excel", 1) ; par exemple si tu as fait un répertoire pour tes documents Excel
EndSwitch
Next
Else
MsgBox(16, "Information", "Aucun paramètre n'a été transmis.")
EndIf
Exit
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 14:52
par moutelous
Bonjour,
Yes, ou alors évaluer le StringRight à une expression donc à (".txt" Or ".ini"), ce qui donne : If StringRight($CmdLine[$i], 4) = (".txt" OR ".ini").
Ça le fait aussi .... Mais honnêtement le "Switch" est plus "propre ..."
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 15:05
par zeshrek
moutelous, je suis pas sur que ta suggestion passe...
If StringRight($CmdLine[$i], 4) = (".txt" OR ".ini")
il fera donc (".txt" OR ".ini) qui ne veut rien dire (les opérations booléennes se font sur la valeur binaire des nombres) qui donnera donc false
et donc le test donnera
if StringRight($CmdLine[$i], 4) = false
ce qui ne peut donner qu'un resultat false donc zou... saut au endif
A moins que je me gourre...
(ps en tout cas merci de dire que ma solution est propre

)
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 15:10
par moutelous
Ben non tu te gourre pas ! ....
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 15:17
par Laddy
Ah merci ZeShrek ;D C'est exactement ce que je cherchais à faire.
Re: [R] Déplacer un ou des fichiers sur un executable
Posté : ven. 24 déc. 2010 15:23
par zeshrek
La classe, ca s'explique pas. Ca se vit !
(la modestie aussi, comme vous l'aurez remarqué !)