[R] ComSpec et ses méandres dans les noms de fichiers longs

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

[R] ComSpec et ses méandres dans les noms de fichiers longs

#1

Message par xeno »

Bon je me casse littéralement le nez là,
j'ai bien trouvé ce tuto

http://www.autoitscript.fr/forum/viewto ... 31&p=17509

mais malgré tout j'ai du mal, je dois aussi emmêlez les pinceaux :oops:

je me fais un petit lanceur openvpn. ou j'y ai inclu une inputbox qui va me chercher avec FileOpenDialog l'emplacement des fichiers, et je mémorise dans un fichier ini

en ligne de commande cela doit donné ça comme résultat

Code : Tout sélectionner

"C:\Program Files (x86)\OpenVPN\bin\openvpn.exe" --config "C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn"

Code : Tout sélectionner

$OpenVpn = """C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"""
$OpenVpnUdp = """C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn"""

Run(@ComSpec & ' /c ' &'"'&GUICtrlRead($OpenVpn)&'"' &' --config' &'"'&GUICtrlRead($OpenVpnUdp)&'"' , "", @SW_SHOW)

 
là j'ai une erreur de syntaxe de nom ou de fichier

Code : Tout sélectionner

Run(@ComSpec & ' /c ' &GUICtrlRead($OpenVpn) &' --config' &GUICtrlRead($OpenVpnUdp) , "", @SW_SHOW)
 
et là je n'ai qu'un morceau 'c:\program' qui s'affiche car sous dos il faut des guillemets
pour les noms longs avec des espaces. donc j'en déduis que les guillemets disparaissent quelque parts :?:

pourtant j'ai bien les guillemets qui apparaissent si je fais

Code : Tout sélectionner

MsgBox(0, "test",GUICtrlRead($OpenVpn) &' --config"&GUICtrlRead($OpenVpnUdp),5)
et si je fais

Code : Tout sélectionner

Run(@ComSpec & ' /c ' &GUICtrlRead($OpenVpn) , "", @SW_SHOW)
 
cela se lance bien, mais la commande est incomplète.

j'ai essayer différents trucs mais sans succès...
Modifié en dernier par xeno le mer. 25 nov. 2009 11:56, modifié 3 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#2

Message par Tlem »

Ceci devrait fonctionner un peut mieux :

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"
$OpenVpnUdp = "C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn"

Run(@ComSpec & ' /c ' & '"' & $OpenVpn & '"' & ' --config ' & '"' & $OpenVpnUdp & '"' , "", @SW_SHOW)
Si vous devez lire des contrôle, remplacez simplement la variable par la lecture du contrôle. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#3

Message par xeno »

ce n'est pas mieux j'ai un message d'erreur il m'affiche un morceau de la ligne

'c:\program' et le message d'erreur a la suite


et je sais que ma ligne de commande est bonne, car quand je la rentre dans une fenêtre dos cela fonctionne nickel.

ps: il n'existe pas un truc pour garder la fenêtre ouverte ? je met @SW_SHOW
mais cela ne permet pas de rester a l'écran, ce n'est pas facile de voir le message
d'erreur, je clique comme un malade pour avoir un effet de rémanence pour lire
les messages d'erreurs :?
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#4

Message par timmalos »

J'avais deja eu un probleme avec @Comspec et une base Oracle. La commande marchait sous Ms-Dos mais IMpossible de la faire passer par Autoit, une erreur etait provoqué au bout d'une heure de mise en service du script ( inscription de données dans la bd oracle) Erreur Incomprehensible j'avais tout testé à l'epoque, et dans les règles de l'art, pas e mode barbare :?
Resultat, j'ai du ecrire un fichier .bat avec la meme commande je precise, puis lancer le .bat et tout a marché niquel.

Je n'ai jamais compris. (Pour ceux qui connaissent, je passais par ODDB.)
Mais ici je pense pas que ca soit le meme problème, aperemment juste une erreur dans la commande.
Peut etre ceci marche t'il?

Code : Tout sélectionner

$OpenVpn = "'C:\Program Files (x86)\OpenVPN\bin\openvpn.exe'"
$OpenVpnUdp = "'C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn'"

Run(@ComSpec & ' /c ' & '"' & $OpenVpn & '"' & ' --config ' & '"' & $OpenVpnUdp & '"' , "", @SW_SHOW)
Pour lire le resultat, il vous faudra passer par Strread et strrout. (Cf Aide de Run)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#5

Message par Tlem »

J'avais aussi eu un problème similaire à cause des noms longs.
Mais qu'à cela ne tienne, il suffit dans ce cas de simplifier les choses. 8)

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn.exe")
$OpenVpnUdp = "C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn")

Run(@ComSpec & ' /c "' & FileGetShortName($OpenVpn) & '" --config "' & FileGetShortName($OpenVpnUdp) & '"' , "", @SW_SHOW)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#6

Message par xeno »

Non, ce n'est pas mieux


alors que si je tronque

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"
$OpenVpnUdp = "C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn"

Run(@ComSpec & ' /c ' & '"' & $OpenVpn & '"' , "", @SW_SHOW)
j'ai l'exécutable "openvpn.exe" qui se lance sans problème...

un bug ou une impossibilité de autoit ??

et j'arrive meme a afficher l'aide avec un temps de pause

Code : Tout sélectionner

Run(@ComSpec & ' /c ' & '"' & $OpenVpn & '"' &' --help' &' |more' , "", @SW_SHOW)

si je bidouille mettant mon script dans "C:\Program Files (x86)\OpenVPN" et en supprimant la partie noms longs de la deuxième partie cela fonctionne.

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"
$OpenVpnUdp = ".\config\zoneudp.ovpn"

Run(@ComSpec & ' /c ' & '"' & $OpenVpn & '"' &' --config '  & $OpenVpnUdp , "", @SW_SHOW)
Modifié en dernier par xeno le mer. 25 nov. 2009 11:57, modifié 1 fois.
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#7

Message par xeno »

J'ai trouvé 8)

j'ai mis un peu de couleur pour voir, mais ce n'est pas très visible..

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"
$OpenVpnUdp = "C:\Program Files (x86)\OpenVPN\config\zoneudp.ovpn"

Run(@ComSpec & ' /c ' & '[color=#FF0000][b]"[/color][color=#0000FF]"[/color][/b]' & $OpenVpn & '[color=#0000FF]"[/color]' &' --config '  &'[color=#0000FF]"[/color]' & $OpenVpnUdp &'[color=#0000FF]"[/color][color=#FF0000]"[/color]', "", @SW_SHOW)
et là aussi ça fonctionne

Code : Tout sélectionner

$OpenVpn = "C:\Program Files (x86)\OpenVPN\bin\openvpn-gui-1.0.3.exe"
$OpenVpnUdp = "C:\Program Files (x86)\OpenVPN\config\"
$udp = "zoneudp.ovpn"

Run(@ComSpec & ' /c ' & '[color=#FF0000]"[/color]"' & $OpenVpn & '"' &' --config_dir '  &'"' & $OpenVpnUdp &'"' &' --connect ' & $udp &'[color=#FF0000]"[/color]' , "", @SW_SHOW)
j'ai fais d'autres essais et a priori les doubles guillemet à la fin, ne serait pas systématique suivant les cas, à voir..
Modifié en dernier par xeno le mer. 25 nov. 2009 11:58, modifié 2 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#8

Message par ani »

Que vous retournes cette macro > @ProgramFilesDir
normalement elle devrait retourner c:\program file(86) ?

Autre Solution, en utilsant les parametre de la commande run(fichier,dossier,mode)

Code : Tout sélectionner

$Folder = "C:\Program Files (x86)\OpenVPN"
$OpenVpn = "bin\openvpn.exe"
$OpenVpnUdp = "config\zoneudp.ovpn"

Run(@ComSpec & ' /c ' & $OpenVpn & ' --config ' & $OpenVpnUdp, $Folder, @SW_SHOW)
j'indiquerai plutôt le commutateur /K au lieu du /c pour tester, pour bien afficher la console ;)

Y d'autre astuce avec les noms long ;)

bonne continuation ;)
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..]ComSpec et ses méandres

#9

Message par xeno »

ani a écrit :Que vous retournes cette macro > @ProgramFilesDir
normalement elle devrait retourner c:\program file(86) ?
Oui cela met c:\program file(86)
ani a écrit : j'indiquerai plutôt le commutateur /K au lieu du /c pour tester, pour bien afficher la console ;)

Y d'autre astuce avec les noms long ;)

bonne continuation ;)
oui effectivement le k laisse la fenêtre ouverte, un petit détails qui évite de se pourrir la vie.

je met mon post en résolu et je détails plus le titre, car c'étais bien un problème lier aux noms de fichiers longs, merci aux participants :P
Répondre