Você pode usar %CD%\ , que significa Diretório atual , em vez de %~dp0 .
Eu não notei nenhuma diferença entre esses dois.
Em uma nota secundária, se você usou o comando start , a prática recomendada é adicionar um "" extra antes do início do programa e incluir todos os parâmetros em uma citação e escapar dos parâmetros citados quando necessário. Exemplo:
start /wait "" "%CD%\MyProgram.exe /link \"MyOtherDLL.dll\""