Как установить переменную в путь родительского каталога на окнах? - PullRequest
17 голосов
/ 10 июня 2009

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

SET current=%cd%

Как бы я установил родителя хотя? SET parent=%..% не работает, так как повторяет %..%

По сути, вызов пакетного сценария C:\a\b\myscript.bat со следующим содержимым:

@echo off
set current=%cd%
echo %current%

печатает C:\a\b, и я хотел бы установить переменную parent, чтобы она печатала C:\a без изменения текущего рабочего каталога на ..

Возможно ли это?

Ответы [ 3 ]

35 голосов
/ 10 июня 2009

Перемещение вверх по каталогу, запоминание текущего, установка родительского элемента, а затем всплытие каталога, откуда вы начали

@echo off
set current=%cd%
pushd ..
set parent=%cd%
popd

echo current %current%
echo parent %parent%
8 голосов
/ 11 июня 2009

Вы также можете сделать что-то вроде этого:

set current=%CD%
set parent=%CD%\..

Он не дает вам каноническое имя родителя, но это всегда должен быть допустимый путь к родительской папке. Он также будет несколько быстрее, чем решения, использующие pushd и popd, но это не будет основным соображением в командном файле.

Редактировать: Обратите внимание, что все решения, в том числе и мое, будут иметь проблемы, если текущая папка является корнем диска. Чистого и простого выхода из этого не существует, поскольку на самом деле нет родительского элемента диска, видимого для пользовательского режима.

2 голосов
/ 10 июня 2009

Используйте

pushd targetFolder
set current=%cd%
popd

Pushd / popd поддерживает стек ранее посещенных каталогов.

...