Ok, acho que encontrei aqui , o que você quer dizer com %~dp
.
Acho que o que você realmente quer fazer é isso:
cd /D "%~dp0"
(!) Mas observe que isso ainda não lhe dará o comportamento correto quando você estiver tentando executar o lote enquanto o diretório atual estiver em outra unidade, pois cd
não altera a unidade ativa.
Editar : aparentemente (obrigado @ Yoopergeek ) você pode adicionar o parâmetro /D
ao comando cd
para permitir que ele também altere a unidade ativa.