计划任务返回 0xFF,但工作正常

计划任务返回 0xFF,但工作正常

批处理文件将 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时正常返回(即处理多个文件),那么不要这样做。endexit

可能需要改变这一点

if %%a not==("*.mpg") goto eof

if %%a not==("*.mpg") exit 0

但我敢打赌它返回的原因0xFF是因为goto eof语法错误,你想写goto :EOF

相关内容