Запланированное задание возвращает 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 not==("*. Mpg"), перейти на:если не существует %% a %% exit
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
,