The batch file/command prompt wouldn't have permission to kill the task if one of the programs elevates and runs as admin, either itself or through compatibility settings.
In any case I came up with this version:
@echo off
set prog1=notepad.exe
set prog2=mspaint.exe
for %%P in (%prog1%) do set prog1name=%%~nP
start %prog1%
start /wait %prog2%
tskill %prog1name%
(Of course notepad.exe and mspaint.exe are placeholders!). I think start /wait returns immediately sooner if the program self-elevates, as that typically involves relaunching a new instance of the program and exiting the existing one, s o this could have issues there.