Как установить переменную в путь родительского каталога в Windows?
Снова перебираясь с командной строкой, я выясню, что я могу сохранить текущий рабочий каталог в переменной следующим образом:
SET current=%cd%
Как бы установить родительский элемент? SET parent=%..%
не работает, поскольку он эхосигнал %..%
В принципе, вызывая пакет script C:\a\b\myscript.bat
со следующим содержимым:
@echo off
set current=%cd%
echo %current%
печатает C:\a\b
, и я хотел бы установить переменную parent
, чтобы она печатала C:\a
, не меняя текущий рабочий каталог на ..
Возможно ли это?
Ответы
Ответ 1
Переместитесь вверх по каталогу, вспомните текущее, установите родительский элемент, а затем поместите каталог обратно туда, где вы начали.
@echo off
set current=%cd%
pushd ..
set parent=%cd%
popd
echo current %current%
echo parent %parent%
Ответ 2
Вы также можете сделать что-то вроде этого:
set current=%CD%
set parent=%CD%\..
Это не дает вам канонического имени родителя, но всегда должно быть допустимым путем к родительской папке. Он также будет несколько быстрее, чем решения, включающие pushd и popd, но это не будет основным соображением в пакетном файле.
Изменить: Обратите внимание, что все решения до сих пор, включая мои, будут иметь проблемы, если текущая папка является корнем диска. Из этого нет чистого и простого выхода, так как на самом деле нет родителя привода, видимого для пользовательского режима.
Ответ 3
Использование
pushd targetFolder
set current=%cd%
popd
Pushd/popd поддерживает стек ранее посещаемых каталогов.