Page 1 sur 1
[R] $CmdLine & $CmdLineRaw
Posté : mar. 24 mars 2009 22:23
par ani
Bonjour tout le monde,
Pour un projet, j'aurai besoin d'attribuer divers parametre comme on peut le voir sous ms-dos.
je prend un exemple avec dir
Code : Tout sélectionner
DIR [lecteur:][chemin][nom_de_fichier] [/A[[:]attributs]] [/B] [/C] [/D] [/L]
[/N] [/O[[:]tri]] [/P] [/Q] [/S] [/T[[:]heure]] [/W] [/X] [/4]
Le switch /A posséde plusieur paramètre comment le reproduire ceux-ci sous autoit ?
merci d'avance
Re: [..] $CmdLine & $CmdLineRaw
Posté : mar. 24 mars 2009 22:47
par sylvanie
Bonsoir Ani,
admettons que le programme compilé se nomme toto et qu'il puisse prendre comme argument /A: suivit de D, H ... comme dir pour fixer les idées (et éventuellement d'autres qu'on ne sitera pas).
alors l'appel
toto /A:DH
va passer /A:DH comme un argument unique en $CmdLine[1]
dans ce cas, il suffit de s'assuré que $CmdLine[1] commence bien par /A: (au cas où il y aurait d'autres arguments que l'on peut permuter comme dans DIR), puis décomposer le reste de la chaîne en caractère unique pour le traiter dans un switch case.
Re: [..] $CmdLine & $CmdLineRaw
Posté : mar. 24 mars 2009 22:57
par Tlem
Je vois que Sylvanie m'à légérement devancé pendent la rédaction de mon message.
Mais je rajoute tout de même ma réflexion :
Tout simplement en analysant la ligne.
En l'occurrence pour le switch /A, celui-ci doit se comporter de la sorte :
/A:D
ou
/A:HR
ou
/A:-D
etc ...
Nous avons donc le commutateur /A: suivit des lettres :
D, H, S, R, ou A.
Chacune de ces lettres peut être précédée du préfixe de négation.
Chaque lettre (avec ou sans préfixe) doit être collée au commutateur et donc si un espace est rencontré, cela signifie la fin du commutateur.
on à donc juste à lire ce qui ce trouve entre /A: et le premier espace trouvé.
Lors de la lecture des attributs, deux cas peuvent ce poser :
On rencontre un - et donc l'attribut qui suit est 'négatif' sinon l'attribut est positif.
Re: [..] $CmdLine & $CmdLineRaw
Posté : jeu. 16 avr. 2009 11:33
par ani
Oups, j'avais oublié le sujet

(vu 40 fois whouaaa)

Pour le moment je reflechis au cmd possible, mais pas evident, j'avais pensé a splitter entre le sépateur
:
Autre question, peut on utilisé les parametre dos avec les futur cmd dos ?
genre utilisé les cmd existante comme find et les redirection > >> ect ?
merci

Re: [..] $CmdLine & $CmdLineRaw
Posté : jeu. 16 avr. 2009 18:21
par Tlem
Heuuu, un peut plus d'explication s'il te plaît ani.
Re: [..] $CmdLine & $CmdLineRaw
Posté : jeu. 16 avr. 2009 18:33
par ani
veuillez m'excuser
N'ayant rien sous les yeux .
Cmd non officiel dos |
Parametre (switch) |
Cmd dos (utilitaire+redirection)
maCommande /list > list.txt
maCommande /list | find "truc"
ect...
vais dl autoit vu que j'ai oublié ma cléusb
encore merci

Re: [..] $CmdLine & $CmdLineRaw
Posté : sam. 25 juil. 2009 17:23
par ani
Encore une confrontation
sur un des utilitaires, le faite de déplacer un fichier sur l'exe, permettait d'excuter la fonction.
Code : Tout sélectionner
if $cmdline[0] = 1 then
$f = $cmdline[1]
else
$f = fileopendialog(...)
endif
mon.exe "fichier"
Le soucis maintenant c'est comment fait-on pour l'envoie de plusieurs fichiers (le deplacement des fichiers vers l'exe), plutot la valeur retourné ? car avec la fonction 1 il me renvoi absolument rien (j'ai compris qu'il prend un seul parametre)
mon.exe "fichier1...2...3...4"
après j'attribué des switch, pour le moment j'en suis plus là ^^'
Re: [..] $CmdLine & $CmdLineRaw
Posté : sam. 25 juil. 2009 17:33
par Tlem
Pas sur d'avoir tout compris, mais au cas ou :
Code : Tout sélectionner
If $cmdline[0] Then
MsgBox(0, "Traitement à faire sur la chaine", $cmdlineraw)
Else
$f = FileOpenDialog(...)
EndIf
Re: [..] $CmdLine & $CmdLineRaw
Posté : sam. 01 août 2009 18:42
par ani
a bein oui cmdlineraw ^^" pas lu la doc

la je suis confronté toujours au même problème, splitter la ligne trop complexe a faire, surtout quand y a des espace.
exemple:
mon.exe "c:\www\param\Example execute.bin" c:\www\param\Example.bat
chez microsoft il parle de la fonction dragqueryfile (lib:shell32), mais bon là suis pas expert.
Surtout que les exe que je concoit n'ont aucune interface juste le cmdline et openfiledialog
si vous avez une info
merci
Re: [..] $CmdLine & $CmdLineRaw
Posté : sam. 01 août 2009 19:47
par Tlem
Généralement, lorsque l'on veut utiliser les paramètres de la ligne de commande, il vaut mieux être quelque peut organisé.
On lance l'exécutable avec X paramètres (X étant non définit).
Choix N° 1 :
- MonExe.exe "paramètre 1" "paramètre 2" "paramètre 3" "paramètre 4" "..."
Choix N° 2 :
- MonExe.exe /A:paramètre 1 /B:paramètre 2 /C:paramètre 3 /D:paramètre 4
Choix N° 3 :
- MonExe.exe paramètre 1|paramètre 2|paramètre 3|paramètre 4
Voilà. On peut aisément imaginer d'autres styles d'envois de paramètres, mais, il n'y à pas d'autre solutions (simple) en dehors de s'organiser une structure qui sera facilement traité par un
StringSplit ou la recherche d'un commutateur.
La solution du commutateur à cela de bien que chaque élément peut être envoyé dans l'ordre que l'on souhaite.
- MonExe.exe /C:paramètre 3 /D:paramètre 4 /B:paramètre 2 /A:paramètre 1
J'espère avoir répondu à tes interrogations.

Re: [..] $CmdLine & $CmdLineRaw
Posté : mer. 05 août 2009 09:55
par ani
oui la dessus j'ai bien suivit, mais j'arrive pas a exprimer la demande

on va mettre çà en image
on remarque dans le détails qu'on séléctionne 2 élèments.
la sortie de cmdlineraw nous sort
Code : Tout sélectionner
"F:\AUTOIT_SCRIPT\WWW\Param\Example execute.bin" F:\AUTOIT_SCRIPT\WWW\Param\Example.bat
si pas, je laisse tomber la selection de fichier multiple enfin çà serait dommage :§
j'ai posé la question sur le fofo anglais et là idem zont rien suivit looool vive ani :p
Edit:vla la solution, c'était vraiment f&acile
MsgBox(0, '', $cmdlineraw)
Code : Tout sélectionner
For $i = 1 To $cmdline[0]
If FileExists($cmdline[$i]) Then
MsgBox(0, '', $cmdline[$i])
EndIf
Next
bon maintenant je passe au cmdline

a touti santi

Re: [..] $CmdLine & $CmdLineRaw
Posté : mer. 05 août 2009 10:58
par Tlem
Re: [..] $CmdLine & $CmdLineRaw
Posté : mer. 05 août 2009 12:02
par ani
Pourquoi ?
déjà je n'y avait pas pensé,
de deux comme on le remarque j'ai de plus en plus de mal à m'exprimer,
alors qu'avec une image tout le monde comprend ^^'
déjà je partais avec la documentation de microsoft qui parlé de la fonction dragqueryfile
et pourtant la solution était fort simpliste
bon allez zou
encore merci

Re: [R] $CmdLine & $CmdLineRaw
Posté : jeu. 06 août 2009 20:14
par ani
Surement que je m'y prend mal, mais lors de la compilation en mode console si je clique ou double clique sur l'exe j'ai la console ms-dos qui se lance et evidement ce n'est pas le but, vu qui y a la boîte de dialogue qui demande de selectionner un fichier
Pourquoi avoir activé le mode console (aut2exe), j'utilise des consolewrites et d'après la doc c'est le seul moyen pour que çà s'affiche dans ms-dos.
y aurait'il une autre méthode ? le StdinWrite
Soit par ms-dos ou la boite de dialogue ?
encore désolé

Re: [R] $CmdLine & $CmdLineRaw
Posté : jeu. 06 août 2009 22:39
par Tlem
Pas de code ...
C'est pas bien !!!
Hoouuuu le vilain modérateur.
