Page 2 sur 2
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : mer. 20 janv. 2016 23:25
par jguinch
Quand le chemin contient des espaces, il faut le mettre entre double quotes
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : mer. 20 janv. 2016 23:30
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
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : mer. 20 janv. 2016 23:52
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)
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 11:45
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.
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 11:56
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 :
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.
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 13:58
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.
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 14:01
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

Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 14:06
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
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 14:36
par mikell
Si avec tout ça le message ne passe pas, il faut préconiser le maraîchage (orienté Solanum tuberosum)
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 15:04
par Boulanza
C'est un très bon débat, je l'aise ouvert la discussion ou je clos le débat ?
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 15:08
par mikell
Si le problème est résolu, tu peux closer [R]

Re: [..] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 15:12
par Boulanza
Merci à vous tous
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 15:26
par TommyDDR
Ah c'est pô évident !
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 18:10
par Boulanza
Oui, ce n'est pas convaincant, mais c'est adjugé...!
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 18:34
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

Re: [R] Problème de codage d'une fonction DOS en Autoit.
Posté : jeu. 21 janv. 2016 20:44
par Boulanza
Bonsoir,
En plus, notre ami mikell est philosophe ...
Bonne soirée mikell.
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Posté : mer. 17 févr. 2016 17:49
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 :
(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
