CmdExec: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (cosmetic issue) |
m (added stay mode) |
||
Line 13: | Line 13: | ||
;; P2 :in: Command and parameters | ;; P2 :in: Command and parameters | ||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
!define | !define Cmd "!insertmacro _CmdExec 0" ; nopause/nowait | ||
!define CmdPause "!insertmacro _CmdExec 1" ; dospause | !define CmdPause "!insertmacro _CmdExec 1" ; dospause | ||
!define CmdWait "!insertmacro _CmdExec 2" ; execwait | !define CmdWait "!insertmacro _CmdExec 2" ; execwait | ||
!define CmdPauseWait "!insertmacro _CmdExec 3" ; dospause+execwait | !define CmdPauseWait "!insertmacro _CmdExec 3" ; dospause+execwait | ||
!define CmdStay "!insertmacro _CmdExec 4" ; stay in command box after execution | |||
!define CmdStayWait "!insertmacro _CmdExec 5" ; stay in command box after execution, and wait for exit | |||
!macro _CmdExec _Mode_ _WorkDir_ _CommandAndParams_ | !macro _CmdExec _Mode_ _WorkDir_ _CommandAndParams_ | ||
StrCmp "${_WorkDir_}" "" +3 | StrCmp "${_WorkDir_}" "" +3 | ||
Line 27: | Line 29: | ||
!else if '${_Mode_}' == '3' | !else if '${_Mode_}' == '3' | ||
ExecWait `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}" & echo. & echo. & pause` | ExecWait `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}" & echo. & echo. & pause` | ||
!else if '${_Mode_}' == '4' | |||
Exec `"$SYSDIR\cmd.exe" /k "${_CommandAndParams_}"` | |||
!else if '${_Mode_}' == '5' | |||
ExecWait `"$SYSDIR\cmd.exe" /k "${_CommandAndParams_}"` | |||
!else | !else | ||
Exec `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}"` | Exec `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}"` |
Revision as of 17:45, 4 February 2012
Author: Lloigor (talk, contrib) |
Description
Execute a command with cmd.exe, with optional dospause and execwait.
Example
${CmdPause} `$ParentFolder` `"d:\tools\free_upx\upx.exe" -v --brute $FileNames`
Macro
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Execute a command with cmd.exe ;; P1 :in: Working directory (""=$outdir) ;; P2 :in: Command and parameters ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; !define Cmd "!insertmacro _CmdExec 0" ; nopause/nowait !define CmdPause "!insertmacro _CmdExec 1" ; dospause !define CmdWait "!insertmacro _CmdExec 2" ; execwait !define CmdPauseWait "!insertmacro _CmdExec 3" ; dospause+execwait !define CmdStay "!insertmacro _CmdExec 4" ; stay in command box after execution !define CmdStayWait "!insertmacro _CmdExec 5" ; stay in command box after execution, and wait for exit !macro _CmdExec _Mode_ _WorkDir_ _CommandAndParams_ StrCmp "${_WorkDir_}" "" +3 Push $OutDir SetOutPath "${_WorkDir_}" !if '${_Mode_}' == '1' Exec `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}" & echo. & echo. & pause` !else if '${_Mode_}' == '2' ExecWait `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}"` !else if '${_Mode_}' == '3' ExecWait `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}" & echo. & echo. & pause` !else if '${_Mode_}' == '4' Exec `"$SYSDIR\cmd.exe" /k "${_CommandAndParams_}"` !else if '${_Mode_}' == '5' ExecWait `"$SYSDIR\cmd.exe" /k "${_CommandAndParams_}"` !else Exec `"$SYSDIR\cmd.exe" /c "${_CommandAndParams_}"` !endif StrCmp "${_WorkDir_}" "" +4 Exch $R0 SetOutPath "$R0" Pop $R0 !macroend