[R] Problème avec ShellExecute

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

[R] Problème avec ShellExecute

#1

Message par Boulanza » lun. 19 juin 2017 16:46

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 15:51, modifié 1 fois.

Avatar du membre
franco
Niveau 6
Niveau 6
Messages : 262
Enregistré le : lun. 03 oct. 2011 21:37
Localisation : Liévin
Contact :
Status : Hors ligne

Re: Problème avec ShellExecute

#2

Message par franco » lun. 19 juin 2017 20:47

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 6
Niveau 6
Messages : 264
Enregistré le : mer. 31 juil. 2013 14:49
Status : Hors ligne

Re: Problème avec ShellExecute

#3

Message par Boulanza » lun. 19 juin 2017 22:07

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 : 1713
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Problème avec ShellExecute

#4

Message par TommyDDR » mar. 20 juin 2017 00:20

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 : 11111
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème avec ShellExecute

#5

Message par Tlem » mar. 20 juin 2017 00:25

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 6
Niveau 6
Messages : 264
Enregistré le : mer. 31 juil. 2013 14:49
Status : Hors ligne

Re: Problème avec ShellExecute

#6

Message par Boulanza » mar. 20 juin 2017 00:33

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 & '"' )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1935
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème avec ShellExecute

#7

Message par jchd » mar. 20 juin 2017 09:57

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 6
Niveau 6
Messages : 264
Enregistré le : mer. 31 juil. 2013 14:49
Status : Hors ligne

Re: Problème avec ShellExecute

#8

Message par Boulanza » mar. 20 juin 2017 10:16

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 6
Niveau 6
Messages : 264
Enregistré le : mer. 31 juil. 2013 14:49
Status : Hors ligne

Re: Problème avec ShellExecute

#9

Message par Boulanza » mar. 20 juin 2017 10:43

Remarque: Je suis sous Windows 10 64 bits.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1935
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#10

Message par jchd » mar. 20 juin 2017 18:31

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
Modérateur
Modérateur
Messages : 5637
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#11

Message par mikell » mar. 20 juin 2017 19:04

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 6
Niveau 6
Messages : 262
Enregistré le : lun. 03 oct. 2011 21:37
Localisation : Liévin
Contact :
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#12

Message par franco » mer. 21 juin 2017 16:48

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 6
Niveau 6
Messages : 262
Enregistré le : lun. 03 oct. 2011 21:37
Localisation : Liévin
Contact :
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#13

Message par franco » mer. 21 juin 2017 17:11

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 : 1399
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#14

Message par orax » mer. 21 juin 2017 20:06

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 16: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 6
Niveau 6
Messages : 264
Enregistré le : mer. 31 juil. 2013 14:49
Status : Hors ligne

Re: [R] Problème avec ShellExecute

#15

Message par Boulanza » ven. 23 juin 2017 15:11

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

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités