Tente adicionar um exit 0
como a última instrução no arquivo em lote.
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.
Hmm ... não tenho certeza da semântica exata do comando call {:label}
ou como "retorna" - se a subrotina :go_now
está retornando normalmente (ou seja, processando mais de um arquivo) quando você não usa coloque um end
ou exit
lá, então não faça isso.
Provavelmente precisa mudar isso
if %%a not==("*.mpg") goto eof
para
if %%a not==("*.mpg") exit 0
mas aposto a razão pela qual ele está retornando 0xFF
é porque goto eof
é um erro de sintaxe, você queria escrever goto :EOF
.