[R] Problème de codage d'une fonction DOS en Autoit.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#21

Message par jguinch »

Quand le chemin contient des espaces, il faut le mettre entre double quotes
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#22

Message par jguinch »

RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\Test.exe"') fonctionne parfaitement avec upx391w sous Windows 10.
Je maintiens : le problème se situe entre le clavier et le fauteuil
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#23

Message par Boulanza »

Pour étre simle comparez les 2 codes sivants:
RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat) marce avec " en plus pourqoi?

RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\Test.exe"')

2- là ça ne marche pas du tout pourquoi montrer moi mon erreursvp?
RunWait($program&" "&$Appli3 &" "& @ScriptDir&"\"&$Resultat)
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#24

Message par Boulanza »

Bonjour jguinch,
Avant tout,je vous confirme encore une fois que le script:
RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\Test.exe"') ==> fonctionne parfaitement avec upx391w sous Windows.

D'un autre côté, je tiens aussi à apporter à toutes les personnes qui sont intervenues pour trouver une solution à mes questions, qu'elles ont tout mon respect et toute mon admiration... Le cas présent est très spéciale: Il s'agit d'une question qui me préoccupe énormément. Je m'explique:
Pourquoi le scripte suivant qui marche parfaitement aussi sous Windows; a en plus un guillemet " et pourtant il fonctionne correctement sans erreur.

RunWait(@ScriptDir & ' \upx.exe -9 " ' & @ScriptDir & ' \ ' &$Resultat)

Et suivant vos dires et conformément à la règle générale : " Quand le chemin contient des espaces, il faut le mettre entre double quotes. "
N.B= Si vous supprimez le guillemet (") le scripte ne marchera pas !?
Je crois qu'une explication à ce problème s'impose n'est-ce pas ?
Alors s'il vous plait faites un petit effort pour nous 'expliquer cela. Merci.
Cordialement.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2104
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#25

Message par TommyDDR »

"Run" fonctionne exactement comme si vous tapiez une ligne de commande dans la console.

Et la console fonctionne comme ceci pour lancer un programme avec paramètres :

Code : Tout sélectionner

NomProgramme [ESPACE] param1 [ESPACE] param2 etc
Donc si dans votre chemin vers le programme à lancer il y a un espace, celui ci sera interprété comme la fin du nom de programme puis paramètre numéro 1.

En revanche, si un espace se situe entre guillemet, celui-ci sera considéré comme faisant partie d'un ensemble et non pas comme la fin du nom du programme ou la fin d'un paramètre.

Après avoir testé, si le guillemet de fin n'est pas présent, le résultat sera le même que si vous en aviez mis un en fin de chaine.

Vous pouvez facilement voir les erreurs de ce type en affichant (ConsoleWrite) ce que vous envoyez à Run, vous verrez tout de suite s'il manque des guillemets ou autre.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#26

Message par jguinch »

Les 3 commandes suivantes fonctionnent :
upx.exe -9 "test.exe"
upx.exe -9 "test.exe
upx.exe -9 test.exe"


Ce n'est pas propre à AutoIt mais propre à l'exécutable upx.exe, qui tolère cette syntaxe.
Pour clarifier les choses, la syntaxe devrait être la suivante :
upx.exe -9 "test.exe" ou upx.exe -9 test.exe ((les guillemets ne sont pas obligatoires ici)
upx.exe -9 "fichier de test.exe" (les guillemets sont obligatoires pour un nom de fichier contenant des espaces)

Mais ça fonctionne aussi avec :
upx.exe -9 "test.exe
upx.exe -9 test.exe"

Parce que upx.exe tolère la faute de frappe, c'est uniquement pour ça que ça marche.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#27

Message par mikell »

jguinch a écrit : upx.exe tolère la faute de frappe, c'est uniquement pour ça que ça marche.
Mais c'est pas une excuse Image


:mrgreen: :arrow:
" 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
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#28

Message par orax »

Code : Tout sélectionner

Ne peut pas marcher puisqu'il y a au moins un espace dans le chemin
upx.exe -9 C:\autoit\Mon Dossier\Test.exe

Syntaxe bizarre mais semble fonctionner quand même, à éviter
upx.exe -9 "C:\autoit\Mon Dossier\Test.exe

Bonnes syntaxes
upx.exe -9 "C:\autoit\Mon Dossier\Test.exe" <= espace donc guillemets obligatoires
upx.exe -9 "C:\autoit\aucunEspace\Test.exe" <= pas d'espace donc guillemets facultatives
upx.exe -9 C:\autoit\aucunEspace\Test.exe   <= pas d'espace donc guillemets facultatives
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#29

Message par mikell »

Si avec tout ça le message ne passe pas, il faut préconiser le maraîchage (orienté Solanum tuberosum)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#30

Message par Boulanza »

C'est un très bon débat, je l'aise ouvert la discussion ou je clos le débat ?
Modifié en dernier par Boulanza le jeu. 21 janv. 2016 20:33, modifié 1 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: [..] Problème de codage d'une fonction DOS en Autoit.

#31

Message par mikell »

Si le problème est résolu, tu peux closer [R] :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 )
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Problème de codage d'une fonction DOS en Autoit.

#32

Message par Boulanza »

Merci à vous tous
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2104
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Problème de codage d'une fonction DOS en Autoit.

#33

Message par TommyDDR »

Ah c'est pô évident !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Problème de codage d'une fonction DOS en Autoit.

#34

Message par Boulanza »

Oui, ce n'est pas convaincant, mais c'est adjugé...!
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] Problème de codage d'une fonction DOS en Autoit.

#35

Message par mikell »

Et une pensée pour jguinch qu'on imagine écraser furtivement un pleur d'émotion à la découverte de la résolution de ce topic Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Problème de codage d'une fonction DOS en Autoit.

#36

Message par Boulanza »

Bonsoir,
En plus, notre ami mikell est philosophe ...
Bonne soirée mikell.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [R] Problème de codage d'une fonction DOS en Autoit.

#37

Message par GhostLine »

http://www.courstechinfo.be/OS/CmdDos.html
MD ou MKDIR "Make directory" - Crée un répertoire
MkDir (Md) Microsoft.com

Créer un sous-répertoire appelé Fred à la racine du disque C
C:\>MD Fred
C:\>

Créer un sous-répertoire "Projets" dans le répertoire actif de la disquette
C:\>MD A:Projets
C:\>

Créer un répertoire appelé "Nouveau Dossier", il faut mettre ce nom entre guillemets !
C:\>MD "Nouveau Dossier"
C:\>

Attention ! Les espaces sont pris par DOS pour des séparateurs.
Sans ces guillemets voici ce que cela donnerait en DOS "pur" :
C:\>MD Nouveau Dossier
Trop de paramètres - Dossier
C:\>

La commande sans guillemets serait acceptée par les versions plus récentes de Windows mais la commande créerait deux répertoires " Nouveau " et " Dossier "
AutoIt fonctionne suivant ces règles. C'est pas plus compliqué que ça ! [et il n'y a pas à être satisfait ou pas : C'EST COMME CA !]

Du coup, la petite difficulté vient du fait que pour éviter qu'AutoIt s’emmêle les pinceaux lorsque l'on veut lancer une commande dans laquelle il va y avoir des guillemets : en effet, on ne voit pas comment il pourrait faire la différence entre les guillemets de ta ligne de commande et les guillemets qui servent à délimiter les arguments de ta fonction ...

Donc :
La fonction (sous DOS) serait, en considérant C:\TEMP comme étant le répertoire contenant le script :

Code : Tout sélectionner

C:\TEMP\upx.exe -9 "C:\TEMP\Résultat de ma requête.txt"
(des guillemets parce que des espaces dans le nom du fichier, on est d'accord)

Problème : on a des guillemets dans notre expression, et il va nous falloir en utiliser pour la transposer dans notre code (pour "encercler" le code dans la fonction RunWait).

Car :

Code : Tout sélectionner

RunWait(@ScriptDir & "\upx.exe -9 "" & @ScriptDir & "\"&$Resultat)
C'est illisible ! A qui sont les guillemets ? La ligne de commande ou la fonction ?

Donc du coup, on va profiter de la souplesse d'AutoIt à ce sujet :

Code : Tout sélectionner

RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat)
NB : si tu le souhaites, et que cela arrange ta compréhension,

Code : Tout sélectionner

RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat&'"')
est équivalent et fonctionne de la même manière (en plus, c'est comme cela que nous avons tapé notre ligne de commande).

Avec des couleurs, pour bien comprendre qui ouvre et qui ferme :
RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat&'"')

J'espère que c'est plus clair :)
Répondre