Page 1 sur 1

[Tuto] La commande Run et la macro @COMSPEC

Posté : mar. 19 mai 2009 00:19
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")

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

Posté : mar. 03 janv. 2012 15:42
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 ?¿!?

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

Posté : mer. 04 janv. 2012 00:19
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"

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

Posté : mer. 04 janv. 2012 10:19
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]

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

Posté : mer. 04 janv. 2012 20:45
par Tlem
C'est ce qu'a dit jefhal !
C'est à vous de voir qui vous voulez croire : jefhal ou la doc !!! :mrgreen:

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

Posté : mer. 04 janv. 2012 20:57
par DimVar
Je dois vraiment être fatigué parce que là je ne pige rien... :(

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

Posté : mer. 04 janv. 2012 21:51
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. ;)

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

Posté : mer. 04 janv. 2012 22:55
par DimVar
Et bien voila qui est clair à présent.
tks. :)

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

Posté : mer. 29 mai 2013 11:33
par Jerem
Quelqu'un pourrait-il m'expliquer la différence entre /c et /k ?

Merci d'avance.

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

Posté : mer. 29 mai 2013 14:20
par mikell
http://ss64.com/nt/cmd.html
/c execute la commande et ferme la console, /k fait pareil mais la laisse ouverte

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

Posté : ven. 31 mai 2013 14:17
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 !