[R] Problème de codage d'une fonction DOS en Autoit.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Re: [..] Problème de codage d'une fonction DOS en Autoit.
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 !
Re: [..] Problème de codage d'une fonction DOS en Autoit.
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
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 !
Re: [..] Problème de codage d'une fonction DOS en Autoit.
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)
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.
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.
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.
- TommyDDR
- 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.
"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.
Et la console fonctionne comme ceci pour lancer un programme avec paramètres :
Code : Tout sélectionner
NomProgramme [ESPACE] param1 [ESPACE] param2 etc
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
Re: [..] Problème de codage d'une fonction DOS en Autoit.
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.
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 !
- mikell
- 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.
Mais c'est pas une excusejguinch a écrit : upx.exe tolère la faute de frappe, c'est uniquement pour ça que ça marche.



" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- orax
- 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.
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)
- mikell
- 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.
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 )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Problème de codage d'une fonction DOS en Autoit.
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.
- mikell
- 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.
Si le problème est résolu, tu peux closer [R] 

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Problème de codage d'une fonction DOS en Autoit.
Merci à vous tous
- TommyDDR
- 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.
Ah c'est pô évident !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Oui, ce n'est pas convaincant, mais c'est adjugé...!
- mikell
- 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.
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 

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Problème de codage d'une fonction DOS en Autoit.
Bonsoir,
En plus, notre ami mikell est philosophe ...
Bonne soirée mikell.
En plus, notre ami mikell est philosophe ...
Bonne soirée mikell.
- GhostLine
- 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.
http://www.courstechinfo.be/OS/CmdDos.html
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 :
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 :
NB : si tu le souhaites, et que cela arrange ta compréhension,
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
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 !]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 "
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"
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)
Donc du coup, on va profiter de la souplesse d'AutoIt à ce sujet :
Code : Tout sélectionner
RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat)
Code : Tout sélectionner
RunWait(@ScriptDir & '\upx.exe -9 "' & @ScriptDir & '\'&$Resultat&'"')
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
