How to SET a variable to the path of parent direct

2020-02-25 07:53发布

Struggling with command line again, I have figure out that I can store the current working directory in a variable like so:

SET current=%cd%

How would I set parent though? SET parent=%..% does not work, as it echoes %..%

Basically, calling a batch script C:\a\b\myscript.bat with the following contents:

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

prints C:\a\b and I should like to set a variable parent so that it would print C:\a without changing the current working directory to ..

Is this possible?

3条回答
在下西门庆
2楼-- · 2020-02-25 08:05

Use

pushd targetFolder
set current=%cd%
popd

Pushd/popd maintain a stack of previously visited directories.

查看更多
Fickle 薄情
3楼-- · 2020-02-25 08:11

You could also do something like this:

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

It doesn't give you the canonical name of the parent, but it should always be a valid path to the parent folder. It will also be somewhat faster than the solutions involving pushd and popd, but that won't be the primary consideration in a batch file.

Edit: Note that all of the solutions so far, including mine here, will have problems if the current folder is the root of a drive. There is no clean and easy way out of that one, since there really is no parent of a drive visible to user mode.

查看更多
Juvenile、少年°
4楼-- · 2020-02-25 08:15

Move up a directory, remembering the current, set the parent, and then pop down a directory, back to where you started

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

echo current %current%
echo parent %parent%
查看更多
登录 后发表回答