[Tuto] La commande Run et la macro @COMSPEC

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[Tuto] La commande Run et la macro @COMSPEC

#1

Message par Tlem »

Je reprend ici un message vu sur le forum Anglais qui décrit les différentes manières d'utiliser la commande Run avec la macro @COMSPEC.
L'auteur Valuater reprend en un seul message les exemple de jefhal.
jefhal a écrit :Petit rappel : "Vous devez impérativement utiliser comspec pour exécuter des commandes internes (DIR, COPY, MD, RD, etc ...). Pour les commandes externes (ATTRIB, CACLS, XCOPY, NET, etc ...), comspec n'est pas indispensable."

UTILISATION D'UNE COMMANDE DOS SIMPLE AVEC PARAMETRES :

Code : Tout sélectionner

Run(@ComSpec & ' /k ' & 'dir /os')
UTILISATION D'UNE COMMANDE SIMPLE AVEC NOM DE FICHIER :

Code : Tout sélectionner

Run(@ComSpec & ' /k ' & 'attrib "c:\autoexec.bat"')
UTILISATION D'ATTRIB :

Code : Tout sélectionner

Run(@comspec & ' /k ' & 'attrib' & ' +R "run notepad1.au3"');add delay before checking status
        sleep(1500)
    run(@comspec & ' /k ' & 'attrib "run notepad1.au3"');delay this line to be sure attrib is set first
UTILISATION DE CACLS.EXE :

Code : Tout sélectionner

Run(@ComSpec & ' /k ' & 'cacls.exe "c:\my music\halloween.mp3"')
    run(@comspec & ' /k ' & 'cacls.exe "run notepad1.au3" /t /e /p jeff-dell\jeff:f')
    run(@comspec & ' /k ' & 'cacls.exe "run notepad1.au3" /t /e /p everyone:f')
        sleep(1500)
    run(@comspec & ' /k ' & 'cacls.exe "run notepad1.au3"')
OBTENIR L'AIDE DE CMD.EXE :

Code : Tout sélectionner

Run(@ComSpec & " /k help | more")
CONCEPTS AVANCE DU FORUM AUTOIT :

Code : Tout sélectionner

$x = 1
RunWait(@ComSpec & " /c " & 'start explorer ' & '"' & 'http://www.atari.com/exchange/rct3/item?id=' & $x & '"', "", @SW_HIDE)

RunWait(@ComSpec & ' /c ' & 'cd /d ' & $dir[$cliff] & $lang[$bob] & $op[$mike])

RunWait(@ComSpec & " /c " & "net send " & $MessageSentTo & GUIRead($TextMessageInput))

RunWait(@ComSpec & " /c " & "net send * " & GUIRead($TextMessageInput))

RunWait(@ComSpec & " /c ipconfig > " & "c:\ipconfig.txt", "", @SW_HIDE)

Run(@ComSpec & " /c Start " & $SelectedURL, "", @SW_HIDE)

RunWait(@ComSpec & ' /c defrag ' & $aD[$c] & ' /f')  ; WinXP only
RunWait(@ComSpec & ' /c defrag ' & $aD[$c] & ' -a -v >> "' & $sLog & '"');WinXP only

RunWait(@ComSpec & " /k " & "cd /d " & $db & "\" & $lang & " && wget " & $dl & "/" & $lang & "/" & $sql, "")

Run(@ComSpec & ' /c copy "c:\program files\diablo II\d2data.mpq" c:\temp\d2data.mpq')

RunWait(@ComSpec & " /c start " & $file, @ScriptDir, @SW_HIDE)

RunWait(@comspec & " /c net send "& $PC &" "& $Text,"",@sw_hide)

Run(@ComSpec & " /c start clip.txt", @ScriptDir,@sw_hide)

; Cette ligne est commantée pour les besoins d'affichage
;RunWait(@ComSpec & ' /C explorer.exe [url=http://www.users.on.net/johnson/resourcehacker/']http://www.users.on.net/johnson/resourcehacker/'[/url], '', @SW_HIDE)

Run(@comspec & " /c au3record.exe /o>test.au3","",@SW_HIDE)

RunWait(@ComSpec & ' /c "' & @TempDir & '\~execute.bat"', '', @SW_HIDE)

Runwait(@comspec & " /c " & '"' & @ScriptDir & '\devcon.exe" enable =net *pci*',"",@SW_HIDE)

RunWait(@ComSpec & " /c " & $row & ".exe -m LZX:21 -r -p -P " & $c & "\" & " n " & $c & ".cab" & " " & $c & "\*.*", $res)


RunWait(@ComSpec & ' /c c:\psinfo.exe -c "\\' & $host & '" > c:\psinfo.txt', 'c:\', @SW_HIDE)

RunWait(@ComSpec & ' /c c:\psinfo.exe -c "\\' & $host & '" > c:\psinfo.txt', 'c:\', @SW_HIDE)

RunWait(@ComSpec & " /c " & 'ftp -s:ftp.ftp 192.168.1.200', "", @SW_HIDE)

RunWait(@ComSpec & ' /c debug < autoit3.dbg', @TempDir, @SW_HIDE)

RunWait(@ComSpec & " /c " & 'netstat -n>c:\ip.txt' , "", @SW_HIDE)

RunWait(@Comspec & " /c " & $sCmd & ">" & $sFileList,"",@SW_HIDE)

Run(@ComSpec & ' /c start ' & $TAG & $F1, '', @SW_HIDE)

RunWait(@Comspec & " /c """ & "nslookup "" " & $IP & " > hostname.txt")

RunWait(@comspec & " /c dir *.EXE /s/b>" & $sExeListName,"",@SW_HIDE)

RunWait(@comspec & " /c dir *.EXE /s/b|cb.exe","",@SW_HIDE);Uses(cb.exe) to route output from a commandline app straight to the clipboard .. which can then be interrogated from within AU3 (thereby avoiding the need to bounce the info through a file)

RunWait(@ComSpec & " /c " & 'del /q /s "' & $dir & '"', "", @SW_HIDE)

RunWait(@COMSPEC & $Mount & $parm2, $AlcoholDir, @SW_HIDE)

Run(@ComSpec & " /c echo " & $PASS & "|idea.com " & $MODE & " " & _FileGetShortName($FILENAME), "", @SW_HIDE)

$rc = RunWait(@ComSpec & ' /c Wscript.exe "' & @TempDir & '\NotesMsg.vbs" //T:30 > sent.log 2>&1', @TempDir, @SW_HIDE)

$E = RunWait(@ComSpec & ' /c ""' & @TempDir & '\~blattmp.exe" "' & $TEXT & _
           '" -to ' & $DEST & ' -binary -server ' & $SMTPSERVER & ' -log ' & @TempDir & _
           '\~maillog.txt -timestamp -f ' & $SENDER & $SUBJECT & '-u ' & $AUTHLOGIN & _
           ' -pw ' & $AUTHPASS & '"', @TempDir, @SW_HIDE)

$cppid = Run(@ComSpec & ' /c cp "' & $source & '" "' & $dest & '"', @ScriptDir,@SW_HIDE); uses cp.exe from UnixTools

$kk32 = runwait(@comspec & " /c dir /a /s /b %systemdrive%\kk32.dll",@SystemDir, @SW_HIDE)
$surf = runwait(@comspec & " /c dir /a /s /b %systemdrive%\surf.dat",@SystemDir, @SW_HIDE)

$ERRORCODE = RunWait(@ComSpec & " /c ping -n 1 -l 5 " & $IP & $NEXTIP, "", @SW_HIDE)

$ERRORCODE = RunWait(@ComSpec & " /c ping -n 1 -l 5 " & $IP & $NEXTIP, "", @SW_HIDE)

$val = RunWait(@ComSpec & ' /c xcopy "'& $source & "\" & $find[$i] & '" "' & $dest & '" /i /e /h /Y /D /Z',@TempDir)

MsgBox(0, "testing",@ComSpec & " /c xcopy "& $source & "\" & $find[$i] & " " & $dest & " /i /e /h /Y /D")
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
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#2

Message par DimVar »

Bonjour,

Je parcours ce tuto, mais j'avais compris que la macro @comspec servait que pour des commandes "internes".
Hors dans tous les exemples, cette macro apparait ?¿!?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#3

Message par Tlem »

Bonsoir.
Il serait pas mal de lire la doc parfois !!!
Extrait de la documentation de la commande Run a écrit :Remarks
Paths with spaces need to be enclosed in quotation marks.

To run DOS (console) commands, try Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; don't forget " " before "/c"
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
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#4

Message par DimVar »

M'enfin !!! Je sais lire tout de meme ! :P
jefhal nous dit que @comspec est necessaire pour des commandes internes (donc pas pour attrib) et ensuite (dans le 2e exemple) il utilise la macro avec attrib.

Bien qu'ayant une migraine ophtalmique, je pense avoir lu dans le bon sens, non ? :mrgreen:
jefhal a écrit :Petit rappel : "Vous ne devez appeler comspec que pour exécuter des commandes internes (DIR, COPY, MD, RD, etc) Vous n'en avez pas besoin pour des commandes externes (ATTRIB, CACLS, XCOPY, NET, etc)"

UTILISATION D'UNE COMMANDE DOS SIMPLE AVEC PARAMETRES :

Code : Tout sélectionner

Run(@ComSpec & ' /k ' & 'dir /os')
UTILISATION D'UNE COMMANDE SIMPLE AVEC NOM DE FICHIER :

Code : Tout sélectionner

Run(@ComSpec & ' /k ' & 'attrib "c:\autoexec.bat"')
[/code]
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#5

Message par Tlem »

C'est ce qu'a dit jefhal !
C'est à vous de voir qui vous voulez croire : jefhal ou la doc !!! :mrgreen:
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
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#6

Message par DimVar »

Je dois vraiment être fatigué parce que là je ne pige rien... :(
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#7

Message par Tlem »

En fait, si vous lisez bien le texte original, tout est dans la nuance du mot : "need" !!!

Phrase originale :
You only need to call comspec to run internal comands (DIR, COPY, MD, RD, etc) You don't need it for external commands (ATTRIB, CACLS, XCOPY, NET, etc)
traduite par :
Vous ne devez appeler comspec que pour exécuter des commandes internes (DIR, COPY, MD, RD, etc) Vous n'en avez pas besoin pour des commandes externes (ATTRIB, CACLS, XCOPY, NET, etc)
Nous constatons que le traducteur (moi), a fait une traduction très moyenne de la première partie, qui peut être mal interprétée :oops: !!!
La bonne traduction serait :
Vous n'avez besoin d'appeler comspec que pour exécuter des commandes internes (DIR, COPY, MD, RD, etc ...) Vous n'en avez pas besoin pour des commandes externes (ATTRIB, CACLS, XCOPY, NET, etc ...)
Sous entendu que pour des commandes externes cela ne gêne pas.

Donc, je ré-édite le premier message pour modifier cela et énoncer clairement la chose :
Vous devez impérativement utiliser comspec pour exécuter des commandes internes (DIR, COPY, MD, RD, etc ...). Pour les commandes externes (ATTRIB, CACLS, XCOPY, NET, etc ...), comspec n'est pas indispensable.
L'explication en est simple, car le commandes dites internes, utilisent l’interpréteur de commande (Command.com ou cmd.exe) pour être exécutées, alors que les commandes externes sont indépendantes de celui-ci. ;)
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
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#8

Message par DimVar »

Et bien voila qui est clair à présent.
tks. :)
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#9

Message par Jerem »

Quelqu'un pourrait-il m'expliquer la différence entre /c et /k ?

Merci d'avance.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#10

Message par mikell »

http://ss64.com/nt/cmd.html
/c execute la commande et ferme la console, /k fait pareil mais la laisse ouverte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

Re: [Tuto] La commande Run et la macro @COMSPEC

#11

Message par Jerem »

Au temps pour moi, j'étais persuadé que c'était un paramètre spécifique à AutoIT.... :roll:

J'ai cherché la réponse partout dans l'aide sans succès. :oops:

Merci pour la réponse en tous cas !
Répondre