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?
Use
Pushd/popd maintain a stack of previously visited directories.
You could also do something like this:
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.
Move up a directory, remembering the current, set the parent, and then pop down a directory, back to where you started