Você não está definindo %ad% . Você está configurando %ad % .
Algumas linguagens são mais seletivas sobre espaços em branco do que outras. A linguagem de script cmd.exe é uma delas - a sintaxe para definir uma variável é set name=value e, se você adicionar espaços em torno de = , eles se tornarão parte do nome e valor da variável .
Se você estiver escrevendo o script apenas para o Windows 7/8, recomendo strongmente o aprendizado do PowerShell. A linguagem usada pelo cmd.exe é horrível .