Page 1 sur 1
[R] Récupérer argument envoyé en ligne de commande
Posté : sam. 22 juin 2013 21:00
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 :
Dans MonprogEnAutoit.exe il y aurais quelque chose du genre :
En espérant avoir été assez claire
Merci d'avance.
Re: [..]Récupérer argument envoyer en ligne de commande
Posté : sam. 22 juin 2013 21:10
par mikell
Très clair
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
Explications détaillées dans le fichier d'aide, à 'Using Autoit/Running Scripts/Command Line Parameters'
Re: [..]Récupérer argument envoyer en ligne de commande
Posté : sam. 22 juin 2013 21:14
par cbourree
Merci !
Parfait, c'est ce que je voulais

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : sam. 22 juin 2013 23:14
par cbourree
Pas si résolu que ça en faite ...
Comment éviter le bug à la compilation ?
Re: [..] Récupérer argument envoyé en ligne de commande
Posté : sam. 22 juin 2013 23:20
par Tlem
Quel bug ?
Re: [..] Récupérer argument envoyé en ligne de commande
Posté : sam. 22 juin 2013 23:52
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
Re: [..] Récupérer argument envoyé en ligne de commande
Posté : dim. 23 juin 2013 10:47
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
Re: [R] Récupérer argument envoyé en ligne de commande
Posté : sam. 14 sept. 2013 14:56
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

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : sam. 14 sept. 2013 21:10
par Tlem
Vous voulez que l'ordinateur ce souvienne de quelque chose sans le sauvegarder quelque part ... Hummm
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.

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : sam. 14 sept. 2013 21:18
par mikell
Faudrait demander à un homéopathe, il nous dirait peut-être comment adapter la "mémoire de l'eau" à l'informatique

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : sam. 14 sept. 2013 21:48
par Tlem
Ouais, ou alors utiliser la version quantique d'AutoIt (v100.47.7.3) sur un ordinateur quantique.

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : dim. 15 sept. 2013 17:55
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
Re: [R] Récupérer argument envoyé en ligne de commande
Posté : dim. 15 sept. 2013 19:25
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
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

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : dim. 15 sept. 2013 21:02
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.
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.
Re: [R] Récupérer argument envoyé en ligne de commande
Posté : dim. 15 sept. 2013 21:53
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
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)
Re: [R] Récupérer argument envoyé en ligne de commande
Posté : lun. 16 sept. 2013 01:01
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.

Re: [R] Récupérer argument envoyé en ligne de commande
Posté : lun. 16 sept. 2013 20:52
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 ...