How to process all existing streams of VOB with FFmepg not stumbling upon the non-existent streams?

It seems, I found an “universal” way to put all the streams of VOB file to MKV if called from Windows Explorer context menu put to Windows registry:

C:Program Filesffmpegbinffmpeg.exe -hide_banner -loglevel info -y -i "%1" -c:v libx264 -c:a copy -map 0:v -map 0:a -map 0:s? "%1.mkv"

But when I want to keep also the subtitles stream using -map 0:s? and there is no one in a VOB file, I get an error:

[matroska @ 00000000004eddc0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[matroska @ 00000000004eddc0] Can't write packet with unknown timestamp
[aost#0:2/copy @ 00000000004f0100] Error submitting a packet to the muxer: Invalid argument
[out#0/matroska @ 00000000000dc780] Error muxing a packet
[matroska @ 00000000004eddc0] Can't write packet with unknown timestamp
[out#0/matroska @ 00000000000dc780] Error writing trailer: Invalid argument
[out#0/matroska @ 00000000000dc780] video:11kB audio:14kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown size=      24kB time=00:00:00.86 bitrate= 226.8kbits/s speed= 131x
Conversion failed!

I understand that FFmpeg’s philosophy is to adapt its command line to a specific video file, but I would like a universal, unchanging command line string so that FFmpeg doesn’t make a tragedy out of the absence of the stream and continues processing the file to get the maximum out of it.