Ohne cmd.exe bekommt er den Fehlercode von der DisplaySwitch.exe, anstatt dem von der cmd.exe.
fehlende Suchpfade, wenn/da ohne Pfadeangabe?
wenn mit, dann vielleicht falscher Pfad?
usw.
Also ja, ein bissl Code kann nie schaden, damit jemand dort eventuelle Fehler bemerken könnte,
und für dich gilt: Rückgabewerte prüfen, damit du erfährts warum es nicht geht. (Datei nicht gefunden, falsche Parameter, Programmfehler, ...)
siehe ERRORLEVEL, bzw. hier Result dieser
WinAPI und GetLastError (jenachdem was in der Doku dieser
WinAPI steht)
Und dieses WinExec solltest du auch gleich endlich mal vergessen, da diese
API schon seit Jahrzehnten veraltet ist.
neu: ShellExecute, CreateProcess und deren Verwandte.