Я прочитал много вопросов и ответов о pushd
здесь и на других сайтах, подавляющее большинство из которых относится к проблемам с путями UNC. Однако у меня есть другая проблема, о которой я не видел ни единого намека.
Используя Windows 10 x64 Enterprise (версия 1809), я выполняю следующий командный файл из окна консоли:
@echo off
setLocal EnableDelayedExpansion
set DestDir=c:\windows
pushd %DestDir%
Моя проблема в том, что pushd
, кажется, выполняется неправильно или не выполняется вообще. Это означает, что я не в c:\windows
, когда был запущен командный файл, но все еще в каталоге, в котором я находился до его запуска.
Я попробовал несколько вещей в отчаянной попытке понять проблему (зная, что эти тесты не имели смысла):
- поставить
c:\windows
в кавычках (set DestDir="c:\windows"
)
- поставить
%DestDir%
в кавычках (pushd "%DestDir%"
)
- используется
!
вместо %
, поскольку включено отложенное расширение, т. Е. pushd "!DestDir!"
- запустил консольные окна. Я запустил командный файл изнутри от имени администратора.
Однако , когда я не включаю отложенное расширение , pushd
работает как положено. Другими словами, после запуска следующего пакетного файла
@echo off
set DestDir=c:\windows
pushd %DestDir%
Меня действительно отправили в c: \ windows независимо от каталога, в котором я находился до запуска командного файла.
Полагаю, в данный момент я довольно глуп, но я не могу обернуться вокруг этого ради моей жизни. Так может кто-нибудь объяснить, почему pushd
терпит неудачу, если активировано отложенное расширение?