Command line Autoit Adobe aerender
我正在用Autoit和aerender渲染Adobe After Effects项目, 我将这行代码放在控制台中:Command line Autoit Adobe aerender,command-line,command,adobe,autoit,after-effects,Command Line,Command,Adobe,Autoit,After Effects,我正在用Autoit和aerender渲染Adobe After Effects项目, 我将这行代码放在控制台中: aerender -project C:\aeProjects\projekt_1.aep -comp "Main" -output C:\aeProjects\output\asd.avi 现在我如何检查这个过程是否完成,以便安全地继续其他步骤。 目前,我只是进行了睡眠,但我认为这不是一个好的做法。您可以使用ProcessExists函数来实现这一点 下面是一个带有超时选项
aerender -project C:\aeProjects\projekt_1.aep -comp "Main" -output C:\aeProjects\output\asd.avi
现在我如何检查这个过程是否完成,以便安全地继续其他步骤。
目前,我只是进行了睡眠,但我认为这不是一个好的做法。您可以使用ProcessExists函数来实现这一点 下面是一个带有超时选项的简单示例:
MsgBox(64, "RunCmdWait", RunCmdWait("notepad.exe"))
Func RunCmdWait($sRuncmd, $iTimeout = 10000)
Local $iPid = Run(@ComSpec & " /c " & $sRuncmd, @ScriptDir, @SW_HIDE, 6)
Local $hTimer = TimerInit() ; Begin the timer and store the handle in a variable.
While 1
Sleep(250)
;Returns 0 when the process is closed
If ProcessExists($iPid) = 0 Then
SetError(0)
ExitLoop
EndIf
;Returns 1 on time out error
If TimerDiff($hTimer) >= $iTimeout Then
SetError(1)
ExitLoop
EndIf
WEnd
Return @error
EndFunc ;==>RunCmdWait
如果需要读取输出,以下是StdoutRead的示例:
MsgBox(64, "StdoutRead", GetStdoutRead("dir"))
Func GetStdoutRead($sRuncmd)
Local $iPid = Run(@ComSpec & " /c " & $sRuncmd, @ScriptDir, @SW_HIDE, 6)
Local $sStdoutRead = ""
While ProcessExists($iPid)
$sStdoutRead &= StdoutRead($iPid)
WEnd
Return $sStdoutRead
EndFunc ;==>GetStdoutRead