Isso não está relacionado a pushd
.
Você precisa usar sinais de porcentagem dupla quando executado a partir do lote (como oposto diretamente a partir da linha cmd.), Portanto, ele deve se tornar:% for /f %%i in ('dir /a:d /b bu* ') do echo /q %%i
Referência do MS: link