Как получить текущий рабочий каталог другого диска в пакетном режиме? - PullRequest
0 голосов
/ 31 октября 2018

Есть ли способ получить текущий рабочий каталог диска , кроме текущего диска ?

Windows хранит текущий каталог каждого диска, а %cd% получает текущий рабочий каталог фактического диска.

Если я заменю диск в пакетном скрипте, я могу получить текущий рабочий каталог фактического диска:

cd w:\Downloads
cd c:\Windows
c:
(echo %cd%)
w:
(echo %cd%)

Есть ли способ получить текущий рабочий каталог без изменения фактического диска?

1 Ответ

0 голосов
/ 31 октября 2018

После поиска ответа я нашел несколько подсказок по странным переменным в https://blogs.msdn.microsoft.com/oldnewthing/20100506-00/?p=14133

используйте %=c:%) для текущего каталога диска c или %=w:%) для w

Или в пакетном сценарии:

cd c:\Windows
cd w:\Downloads
(echo %=c:%)
(echo %=w:%)

UPDATE

Как указал @RossRidge, это не Windows, хранящая эти странные переменные , а процессор команд DOS. Эти странные переменные известны только в текущем сеансе. То же самое относится к cd (см. Комментарий @Stephan)

Открытие двух командных процессоров DOS:

В первом командном процессоре DOS:

cd c:\Windows
cd w:\Downloads
(echo %=c:%)
    -> c:\Windows
(echo %=w:%)
    -> w:\Downloads
cd w:
    -> w:\Downloads

Во втором командном процессоре DOS:

(echo %=w:%)
    -> %=w:%       <- this variable is not set, not known
cd w:
    -> w:\

Обратите внимание на несогласованный способ хранения «текущего каталога»: cd возвращает корневой каталог после входа в процессор команд DOS. Но %=w:% не устанавливается, пока каталог не изменится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...