批处理文件将 mpg 转换为 avi 并按计划运行。尽管批处理按照计划正常运行,但计划任务返回 0xff 消息。手动运行时,它显示退出代码 0。我尝试插入“end” - 返回 0x0,但它只转换第一个文件并忽略其余文件。
del /q /s staxrip_temp\*
cd staxrip_temp
for /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"
cd..
for %%f in (*.mpg) do echo %%f
for %%a in ("*.mpg") do call :go_now "%%a"
if %%a not==("*.mpg") goto eof
:go_now
echo processing %~n1.mpg
staxrip.exe -template:_myxvid "%~dpn1.mpg" -encode -exit
del /q "%~dpn1.mpg"
rem echo %ERRORLEVEL%
rem end
已解决:已替换如果 %%a 不==("*.mpg") 转到 eof 和: 如果不存在 %%a%% 退出
答案1
尝试添加exit 0
作为批处理文件的最后一条语句。
Quits the CMD.EXE program (command interpreter) or the current batch
script.
EXIT [/B] [exitCode]
/B specifies to exit the current batch script instead of
CMD.EXE. If executed from outside a batch script, it
will quit CMD.EXE
exitCode specifies a numeric number. if /B is specified, sets
ERRORLEVEL that number. If quitting CMD.EXE, sets the process
exit code with that number.
嗯...我不确定该call {:label}
命令的确切语义或它如何“返回” - 如果您的子程序在您没有放置或:go_now
时正常返回(即处理多个文件),那么不要这样做。end
exit
可能需要改变这一点
if %%a not==("*.mpg") goto eof
到
if %%a not==("*.mpg") exit 0
但我敢打赌它返回的原因0xFF
是因为goto eof
语法错误,你想写goto :EOF
。