Page 1 sur 2

[R] Problème avec ShellExecute

Posté : lun. 19 juin 2017 17:46
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.

Re: Problème avec ShellExecute

Posté : lun. 19 juin 2017 21:47
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)


++

Re: Problème avec ShellExecute

Posté : lun. 19 juin 2017 23:07
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)

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 01:20
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)

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 01:25
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.

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 01:33
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 & '"' )

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 10:57
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 !

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 11:16
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 & '"' )

Re: Problème avec ShellExecute

Posté : mar. 20 juin 2017 11:43
par Boulanza
Remarque: Je suis sous Windows 10 64 bits.

Re: [R] Problème avec ShellExecute

Posté : mar. 20 juin 2017 19:31
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 & '"')

Re: [R] Problème avec ShellExecute

Posté : mar. 20 juin 2017 20:04
par mikell
Pourquoi ne pas utiliser Run ?

Re: [R] Problème avec ShellExecute

Posté : mer. 21 juin 2017 17:48
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.


++

Re: [R] Problème avec ShellExecute

Posté : mer. 21 juin 2017 18:11
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 ?


++

Re: [R] Problème avec ShellExecute

Posté : mer. 21 juin 2017 21:06
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

Re: [R] Problème avec ShellExecute

Posté : ven. 23 juin 2017 16:11
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

Re: [R] Problème avec ShellExecute

Posté : mer. 10 avr. 2019 16:10
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

Re: [R] Problème avec ShellExecute

Posté : mer. 10 avr. 2019 18:06
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.

Re: [R] Problème avec ShellExecute

Posté : mer. 10 avr. 2019 22:25
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 ...

Re: [R] Problème avec ShellExecute

Posté : mer. 10 avr. 2019 22:44
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

Re: [R] Problème avec ShellExecute

Posté : mer. 10 avr. 2019 22:47
par Tlem
J'ai édité mon message au moment ou vous avez répondu.
Regardez la partie concernant le chemin. ;)