[R] Récupérer argument envoyé en ligne de commande

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

[R] Récupérer argument envoyé en ligne de commande

#1

Message par cbourree »

Bonjour,
alors voilà ne trouvant rien sur le net, je me demandais si lorsque en ligne de commande je lançais mon programme avec des arguments je pouvais récupérer ceux-ci dans mon programme si oui comment ? (Un petit exemple serais appréciable)
Ex : Je lance mon programme avec :

Code : Tout sélectionner

MonprogEnAutoit.exe UnArgument
Dans MonprogEnAutoit.exe il y aurais quelque chose du genre :

Code : Tout sélectionner

If ArgumentRecu = UnArgument Then ...
En espérant avoir été assez claire
Merci d'avance.
Modifié en dernier par cbourree le sam. 22 juin 2013 23:14, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Récupérer argument envoyer en ligne de commande

#2

Message par mikell »

Très clair :wink:

Code : Tout sélectionner

MsgBox(0,'params', $CmdLine[0] &@crlf& $CmdLine[1])   
MsgBox(0,'$CmdLineRaw', $CmdLineRaw)
Compile ça en "monscript.exe", et lance-le avec un argument, par exemple comme ça

Code : Tout sélectionner

Run("c:\monscript.exe mon_argument")
Explications détaillées dans le fichier d'aide, à 'Using Autoit/Running Scripts/Command Line Parameters'
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [..]Récupérer argument envoyer en ligne de commande

#3

Message par cbourree »

Merci !
Parfait, c'est ce que je voulais ;)
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#4

Message par cbourree »

Pas si résolu que ça en faite ...
Comment éviter le bug à la compilation ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer argument envoyé en ligne de commande

#5

Message par Tlem »

Quel bug ?
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é".
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [..] Récupérer argument envoyé en ligne de commande

#6

Message par cbourree »

J'ai compris comment faire merci ... le [0] exist forcément et est le nombre d'argument ... Il me suffi donc ne pas appeler le [1] si il n'y à pas de par ... Tout bête mais fallait comprendre encore merci
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer argument envoyé en ligne de commande

#7

Message par Tlem »

Effectivement, si vous lancez un programme sans paramètres, alors l'utilisation de $CmdLine[x] provoquera fatalement une erreur.
Pour éviter cela, vous devez gérer l’exception :

Code : Tout sélectionner

#include <array.au3>

If $CmdLine[0] <> 0 Then
    MsgBox(64, 'La ligne de paramètres envoyée aux programme est :', $CmdLineRaw)

    Local $aParams = StringSplit($CmdLineRaw, " ")
    _ArrayDisplay($aParams, "Liste des paramètres")
Else
    MsgBox(64, "Info", "Vous avez lancé le programme sans paramètres" & @TAB)
EndIf

; Le reste du programme
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é".
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#8

Message par cbourree »

Dsl je remonte ce sujet mais en réalité je n'ai pas résolu mon problème ... Mon vraie problème est que je veux que chacun de mes programmes est un identifiants différents ! Et ce que celui ci soit rentré par l'utilisateur pour le premier lancement ! Maintenant grâce à vous je sais quand est le premier lancement mais comment se souvenir de cette identifiant SANS LE SAUVEGARDER sur un fichier externe ou même dans la base de registre.

Merci encore d'avance ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#9

Message par Tlem »

Vous voulez que l'ordinateur ce souvienne de quelque chose sans le sauvegarder quelque part ... Hummm :roll:

Edit :
Si vous voulez que votre programme sache qu'il a déjà été lancé, il faut bien qu'il prenne cette information quelque part ! Donc si vous ne voulez pas stocker cette information, je ne vois pas comment votre script pourrait en avoir connaissance. :mrgreen:
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é".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#10

Message par mikell »

Faudrait demander à un homéopathe, il nous dirait peut-être comment adapter la "mémoire de l'eau" à l'informatique :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#11

Message par Tlem »

Ouais, ou alors utiliser la version quantique d'AutoIt (v100.47.7.3) sur un ordinateur quantique. :lol:
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é".
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#12

Message par cbourree »

"Si vous voulez que votre programme sache qu'il a déjà été lancé, " Si c'est la première fois il est lancé avec des arguments ...

"sur un fichier externe ou même dans la base de registre." -> Je demandais si il avait pas d'autre endroit ou sauvegarder cette informations ... Et je reviens sur mes mots, je veux bien enregistrer cela dans un fichier si celui ci est sur un serveur
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#13

Message par mikell »

Dans ce cas c'est évidemment différent, parce que "se souvenir de cette identifiant SANS LE SAUVEGARDER" c'est un pousse-au-troll :roll:

Un argument n'est qu'un paramètre que l'exe lancé va lire pour se comporter en conséquence
Au 2ème lancement pour que l'exe se souvienne d'un évènement survenu lors de son 1er lancement, sachant que l'exe ne peut pas "évoluer" il faut OBLIGATOIREMENT que l'info soit stockée quelque part en externe
Après la question du support de cette info est un détail, toutes les options sont possibles dont bien sûr le fichier sur un serveur 'cloud' qui est le mieux qu'on puisse espérer en matière de sécurité (si l'on peut dire)

Edit
J'ai bien lu le rapport et en tant que modo je vais sévèrement réprimander ce user facétieux :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#14

Message par Tlem »

Sauf que si la machine n'a pas accès au Cloud, l'information ne pourra pas être stockée !!! Je privilégie donc l'enregistrement de manière 'codée' dans un fichier ou dans la base de registre comme n'importe quel autre programme Windows. :roll:
Si c'est l'exécutable lui même qui doit connaitre cette information de manière indépendante du support sur lequel il se trouve, alors seul la modification du script compilé ou d'un de ses composants essentiel permettra une telle gymnastique.
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é".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#15

Message par mikell »

Sauf qu'une modification d'exe en admettant qu'elle soit possible (sur un exe en cours d'utilisation ?!) est une manip de type viral et que le dernier sujet qui l'évoquait a été poubellisé vite fait :mrgreen:
Le cloud est bien pour la sécurité mais j'ai pas dit que c'était le plus pratique, perso je suis registre (avec cryptage ou non)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#16

Message par Tlem »

Ca dépend, on pourrait juste envisager de modifier des informations de version tel que "PrivateBuild" ou "SpecialBuild" qui pourrait contenir une clé cryptée avec la date. :roll:
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é".
Avatar du membre
cbourree
Niveau 5
Niveau 5
Messages : 104
Enregistré le : sam. 05 févr. 2011 18:07
Localisation : Lyon
Status : Hors ligne

Re: [R] Récupérer argument envoyé en ligne de commande

#17

Message par cbourree »

Merci de vos réponses, même les trolesques (avoir une excuse pour reporter un modo c'est juste génial ) xD
Donc voilà mon programme est destiné à fonctionner sur un réseau d'entreprise, sans forcement que l'administrateur le sache, ce qui signifie qu'il n'a tout simplement pas accès aux bases de registres, ni même le droit de sauvegarder un fichier après la fermeture de session. Mais donc je pense que le mieux est en effet que le programme génère un ID machine composé par exemple du nom de PC + son IP avec lequel il va demander à mon serveur (port 80) cette information qui y aura été stocker ... Donc je passe le sujet en résolu mais si vous avez une idée pour épargner mon serveur ...
Répondre