После многих лет использования pushd/popd в командных файлах Windows, с удивлением обнаружил, что pushd сохраняет текущий каталог лишь в том случае, когда ей задан параметр-путь. Если параметр не задан — выводит стек сохраненных путей.
В документации (встроенная справка и TechNet) об этом ни слова.
То есть,
pushd dir
popd
предшествующий текущий каталог восстанавливает, а
pushd
cd dir
popd
— не восстанавливает.
Проверял в XP SP3 и Win7 SP1 x64 — одинаково. Что интересно, по этому вопросу почти ничего не гуглится.
Если нужно разнести во времени сохранение текущего каталога и его смену, придется извращаться так:
pushd "%CD%"
...
cd dir
...
popd