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.