Путь, который ты получаешь через команду %~dp0\, необходимо преобразовать, заменив все обратные слэши (\) на двойные (\\). Вот как это можно сделать:
Пример скрипта:
@echo off
setlocal enabledelayedexpansion
:: Получаем путь
set "path=%~dp0"
:: Заменяем одиночные обратные слэши на двойные
set "new_path="
for /f "tokens=1,* delims=\" %%a in ("!path!") do (
if defined new_path (
set "new_path=!new_path!\\%%a"
) else (
set "new_path=%%a"
)
if defined %%b set "new_path=!new_path!\\%%b"
)
:: Выводим результат
echo !new_path!