[R] Problème avec ShellExecute

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Problème avec ShellExecute

#1

Message par Boulanza »

Bonjour tout le monde,
Je vous prie de m’aider à trouver mon erreur sur le script ci-dessous
Sous ShellExecute, le dossier de destination : test2 est vide, par contre le fichier.isz se trouve dans le dossier source : test1 au lieu de se trouve dans le dossier de destination test2.
 Local $program8 = @ProgramFilesDir&"\UltraISO\UltraISO.exe"
Local $options1 = "-compress n -password 123 -imax -l -bin2isz"
Local $options2= "-output"
Local $Source = C:\test1\fichier.iso Local
$Destination = C:\test2\ fichier.isz
ShellExecute( $program8 , '"' & $options1 & '" "' & $Source & '" "' & $options2 & '" "' & $Destination & '"' )
Sous dos la commande marche parfaitement.
C:\Program Files\UltraISO\UltraISO.exe -silent -compress n -password 123 -imax -l -bin2isz C:\test1\fichier.iso -output C:\test2\ fichier.isz
Merci en avance de votre aide.
Cordialement.
Modifié en dernier par Boulanza le mar. 20 juin 2017 16:51, modifié 1 fois.
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: Problème avec ShellExecute

#2

Message par franco »

Salut.

Tu dis que sous DOS, la commande fonctionne parfaitement...

Utilise donc la commande Run (ou RunWait) => https://www.autoitscript.fr/autoit3/doc ... ns/Run.htm
Pour exécuter les commandes DOS (console), essayez Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; ne pas oublier l'espace " " avant "/c"
Tu devrais déclarer la commande en une seule variable.
Et faire un

Code : Tout sélectionner

RunWait(@ComSpec & " /c " & $macommande, "", @SW_HIDE)
Sans oublier que tu as des erreurs de déclaration de variable (guillemet manquant)


++
L'entraide, c'est mon dada ;)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: Problème avec ShellExecute

#3

Message par Boulanza »

Merci pour votre aide. Malheureusement ça ne donne rien.Voir code ci-dessous
$macommande= "C:\Program Files\UltraISO\UltraISO.exe -silent -compress n -password 123 -imax -l -bin2isz"&" "&"C:\test1\fichier.iso -output C:\test2\fichier.isz"
MsgBox(64,"test",$macommande)
Run(@ComSpec & ' /k ' & $macommande, "", @SW_HIDE)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Problème avec ShellExecute

#4

Message par TommyDDR »

Essayez avec des guillemets :
$macommande= '"C:\Program Files\UltraISO\UltraISO.exe" -silent -compress n -password 123 -imax -l -bin2isz C:\test1\fichier.iso -output C:\test2\fichier.isz'
MsgBox(64,"test",$macommande)
Run(@ComSpec & ' /k ' & $macommande, "", @SW_HIDE)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème avec ShellExecute

#5

Message par Tlem »

Bonsoir.
Je n'ai pas tester, mais ceci devrait fonctionner :

Code : Tout sélectionner

$macommande= '"C:\Program Files\UltraISO\UltraISO.exe" -silent -compress n -password 123 -imax -l -bin2isz "C:\test1\fichier.iso" -output "C:\test2\fichier.isz"'
MsgBox(64,"test",$macommande)
Run(@ComSpec & ' /c ' & $macommande, "", @SW_HIDE)
Il faut absolument que chaque élément contenant des espaces (tel un chemin) soit "isolé" par des guillemets.
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é".
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: Problème avec ShellExecute

#6

Message par Boulanza »

Non ni la proposition de TommyDDR et de Tlem ne donnent rien. Par contre la commande sous ShellExecute marche à 50% : Le dossier de destination : test2 est vide, par contre le fichier.isz se trouve dans le dossier source : test1 au lieu dans le dossier de destination test2. La question est : Pourquoi ShellExecute ne copie pas le fichier isz dans le dossier test2 ?
Local $program8 = @ProgramFilesDir&"\UltraISO\UltraISO.exe"
Local $options1 = "-compress n -password 123 -imax -l -bin2isz"
Local $options2= "-output"
Local $Source = C:\test1\fichier.iso
Local $Destination = C:\test2\ fichier.isz
ShellExecute( $program8 , '"' & $options1 & '" "' & $Source & '" "' & $options2 & '" "' & $Destination & '"' )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : En ligne

Re: Problème avec ShellExecute

#7

Message par jchd »

Local $Source = C:\test1\fichier.iso
Local $Destination = C:\test2\ fichier.isz
Cette syntaxe incorrecte ne risque pas de donner quoi que ce soit !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: Problème avec ShellExecute

#8

Message par Boulanza »

Voici mon code: Sujet du problème, je crois cette partie de la commande qui est mal écrite:
Fichier de destination: "-output"& '" "' &"C:\test2\fichier.isz"
Local $program = @ProgramFilesDir&"\UltraISO\UltraISO.exe"
Local $options1 = "-compress n -password 123 -imax -l -bin2isz"
Local $options2= "-output"
Local $Source = "C:\test1\fichier.iso"
Local $Destination = "C:\test2\fichier.isz"
ShellExecute($program , '"' & $options1 & '" "' & $Source & '" "' & $options2 & '" "' & $Destination & '"' )
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: Problème avec ShellExecute

#9

Message par Boulanza »

Remarque: Je suis sous Windows 10 64 bits.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : En ligne

Re: [R] Problème avec ShellExecute

#10

Message par jchd »

Voir si c'est mieux ainsi :

Code : Tout sélectionner

Local $program = @ProgramFilesDir&"\UltraISO\UltraISO.exe"
Local $options1 = "-compress n -password 123 -imax -l -bin2isz"
Local $options2= "-output"
Local $Source = "C:\test1\fichier.iso"
Local $Destination = "C:\test2\fichier.isz"
ShellExecute('"' & $program & '"', $options1 & ' "' & $Source & '" ' & $options2 & ' "' & $Destination & '"')
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
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 avec ShellExecute

#11

Message par mikell »

Pourquoi ne pas utiliser Run ?
" 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
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#12

Message par franco »

Lu'

+1 Mikell

Surtout que, dans l'aide de run, il est bien stipulé de mettre /c.
Et dans les scripts, certains l'oublient. Peut-être que cela joue.

Il faudrait VOIR où ça coince.

Et faire donc ceci :
$macommande= '"C:\Program Files\UltraISO\UltraISO.exe" -silent -compress n -password 123 -imax -l -bin2isz "C:\test1\fichier.iso" -output "C:\test2\fichier.isz"'
MsgBox(0,"test",$macommande)
RunWait(@ComSpec & " /c " & $macommande & ' & pause', "", @SW_SHOW)
PS : enlever le "silent" peut montrer visuellement si ça fonctionne (?)

Je vais réinstaller ultra iso.


++
L'entraide, c'est mon dada ;)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#13

Message par franco »

Yo !

J'ai tenté ceci :
$macommande = '"c:\Program Files (x86)\UltraISO\UltraISO.exe" -silent -compress n -password 123 -imax -l -bin2isz "C:\test1\fichier.iso" -output "C:\test2\fichier.isz"'
MsgBox(0, "test", $macommande)

RunWait($macommande, '', @SW_SHOW)
RunWait(@ComSpec & ' /c ' & $macommande & ' & pause', '', @SW_SHOW)
Erreur : Format de l'image inconnu - pour le 1er RunWait => http://i.imgur.com/IppnaPi.png
Erreur pour le second RunWait : 'c:\Program' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.

Alors que le chemin du fichier est bien entre guillemet...
Serait-il possible que, vu la longueur de la ligne, la ligne de commande est tronquée ?


++
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#14

Message par orax »

Pour tester, entrez chacune des commandes suivantes dans la fenêtre Exécuter (raccourci : WIN+R).

Code : Tout sélectionner

cmd /k "C:\Program Files (x86)\AutoIt3\Au3Info.exe" "test"
Cette commande retourne : 'C:\Program' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


Mais les commandes ci-dessous fonctionnent :

Code : Tout sélectionner

cmd /k "C:\Program Files (x86)\AutoIt3\Au3Info.exe" 'test'
cmd /k ""C:\Program Files (x86)\AutoIt3\Au3Info.exe" "test""
cmd /k "C:\Program Files (x86)\AutoIt3\Au3Info.exe" -test
franco a écrit : mer. 21 juin 2017 17:48 Surtout que, dans l'aide de run, il est bien stipulé de mettre /c.
Oui mais lorsqu'il s'agit d'une commande externe je ne suis pas sûr que ce soit indispensable.
En revanche, pour exécuter la commande interne DIR, je dois spécifier quel interpréteur de commandes je souhaite utiliser.

Code : Tout sélectionner

#include <AutoItConstants.au3>

$iPID = Run(@ComSpec & ' /C DIR', @ScriptDir, @SW_HIDE, $STDOUT_CHILD) ; cmd.exe
ProcessWaitClose($iPID)
$sOutput = StdoutRead($iPID)
MsgBox(0, "@ComSpec (cmd.exe)", $sOutput)

$iPID = Run('PowerShell -Command "DIR"', @ScriptDir, @SW_HIDE, $STDOUT_CHILD) ; powershell.exe
ProcessWaitClose($iPID)
$sOutput = StdoutRead($iPID)
MsgBox(0, "PowerShell", $sOutput)
On remarque d'ailleurs que le résultat est différent avec l'interpréteur PowerShell.

http://autoitscript.fr/forum/viewtopic. ... 268#p96268
https://windows.developpez.com/faq/batc ... de_externe
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#15

Message par Boulanza »

le deux code suivants marche parfaitement :

Code : Tout sélectionner

Local $program = @ProgramFilesDir&"\UltraISO\UltraISO.exe"
Local $options1 = "-compress n -password 123 -imax -l -bin2isz"
Local $options2= "-output"
Local $Source = "C:\test1\fichier.iso"
Local $Destination = "C:\test2\fichier.isz"
ShellExecute('"' & $program & '"', $options1 & ' "' & $Source & '" ' & $options2 & ' "' & $Destination & '"')
$macommande = '"c:\Program Files (x86)\UltraISO\UltraISO.exe" -silent -compress n -password 123 -imax -l -bin2isz "C:\test1\fichier.iso" -output "C:\test2\fichier.isz"'
MsgBox(0, "test", $macommande)

RunWait($macommande, '', @SW_SHOW)
RunWait(@ComSpec & ' /c ' & $macommande & '', '', @SW_SHOW)
Merci infiniment pour vous tous
Avatar du membre
corrs78
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 13 août 2007 17:38
Localisation : Yvelines
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#16

Message par corrs78 »

Bonjour,
désolé de rouvrir ce dossier, mais j'ai le meme souci et je ne m'en sors pas.

je dois passer la commande 'nltest ' mais ni shellexecute ni Run ne fonctionne.

A chaque fois j'ai un retour ecran dans la cmd :
'C:\Windows\System32\nltest.exe' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
Appuyez sur une touche pour continuer...


alors que lorsque je passe par une cmd la commande fonctionne parfaitement.

voici mon script :
$macommande = "nltest /server:%COMPUTERNAME% /sc_query:MON_DOMAINE > c:\Test_RelationApprobation.txt & PAUSE"
RunWait(@ComSpec & " /c " & $macommande,"",@SW_SHOW)
(jai ajouté une pause pour que la fenêtre dos reste ouverte)
j'ai egalement tenté avec ""C:\Windows\System32\nltest.exe ...." pas mieux

* j'ai essayé vos solutions sans succès, j'ai raté quelque chose ?

merci
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#17

Message par Boulanza »

Bonjour,
Depuis que PowerShell remplace l’invite de commandes « cmd.exe », les codes qui utilisent _RunDos de AutoIt ne marchent plus ! sous Windows 10? Voici la solution avec l’invite de commandes PowerShell :
ShellExecuteWait(@SystemDir&"\WindowsPowerShell\v1.0\powershell.exe")
ça marche pour moi, à vous de vérifier.
Cordialement.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#18

Message par Tlem »

Bonsoir.
Tel quel, avec mon Windows 10 a jour, j'ai une erreur d'accès refusé car un script sans élévations de droits ne peux pas écrire à la racine de C (et dans les dossiers système).
Si je rajoute "#RequireAdmin" ou si je modifie le chemin vers mon disque D, la commande s'exécute de manière normale !

Vu votre message d'erreur, peut être avez vous un problème avec votre variable système "Path". Pour plus de fiabilité indiquez le chemin complet de l'exécutable : "@SystemDir\NlTest.exe"

@Boulanza
PowerShell ne remplace pas encore l'invite de commandes "cmd.exe". Peut-être un jour, mais surement pas de suite ...
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
corrs78
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 13 août 2007 17:38
Localisation : Yvelines
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#19

Message par corrs78 »

Merci Tlem,
J'ai mis ce path pour exemple dans mon ça c'est dans un répertoire où j'ai bien tous les droits ntfs. J'ai aussi tenté de mettre le chemin complet de cet exécutable natif Windows, sans succès. Je vais creuser ça demain.

Bonne nuit
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#20

Message par Tlem »

J'ai édité mon message au moment ou vous avez répondu.
Regardez la partie concernant le chemin. ;)
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é".
Répondre