Hast Du es mal mit dem "START"-Kommando versucht? Dein Programm benötigt wohl (s)ein Working Directory. Mit "START" kannst Du das als Parameter /D mitgeben, also in etwa so:
help start
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
path Starting directory.
<- SNIP ->
START /D my_working_directory my_working_directory\xyz.exe
Das wäre dann auch flexibel, d.h. Du könntest my_working_directory über was auch immer einlesen, in einer Varaible speichern und beim Ausruf entsprechend mitgeben. einzige Voraussetzung: my_working_directory ist tatsächlich richtig, d.h. existiert und enthält Deine exe ...