[R] Déplacer un ou des fichiers sur un executable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

[R] Déplacer un ou des fichiers sur un executable

#1

Message 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
Modifié en dernier par Laddy le ven. 24 déc. 2010 10:59, modifié 1 fois.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Déplacer un ou des fichiers sur un executable

#2

Message par moutelous »

Bonjour,

Ben, sachant que "$CmdLine[1]" remplace les variables du type "%1", oui ......
A+
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Déplacer un ou des fichiers sur un executable

#3

Message 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.
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] Déplacer un ou des fichiers sur un executable

#4

Message par FernandG »

Bonjour,

Moutelous vous donnait la solution pourtant :wink:

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 :wink:

Bonne journée.
AutoItement.
Modifié en dernier par FernandG le ven. 24 déc. 2010 10:53, modifié 1 fois.
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] Déplacer un ou des fichiers sur un executable

#5

Message 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.
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#6

Message par Laddy »

Merci FernandG
c'est exactement ce que je voulais. Un exemple concret.

Bonnes fêtes de fin d'année
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#7

Message 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
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#8

Message 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
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#9

Message par Laddy »

Bonjour Zeshrek force Orange,
J'ai testé sur les 2codes postés.

Le 1er : toujours qu'un fichier
le second : aucun fichier
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#10

Message 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)
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#11

Message par Laddy »

Arf j'y étais presque effectivement mon for était mal placé.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#12

Message par zeshrek »

Classique erreur de débutant ;)
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#13

Message 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.
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#14

Message 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
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#15

Message 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
Si vis pacem para bellum
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#16

Message 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 ..."
A+
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#17

Message 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 :D )
Si vis pacem para bellum
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#18

Message par moutelous »

Ben non tu te gourre pas ! ....
A+
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#19

Message par Laddy »

Ah merci ZeShrek ;D C'est exactement ce que je cherchais à faire.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Déplacer un ou des fichiers sur un executable

#20

Message par zeshrek »

La classe, ca s'explique pas. Ca se vit !
(la modestie aussi, comme vous l'aurez remarqué !)
Si vis pacem para bellum
Répondre