Windows 如何在命令行中获取当前目录的父目录/上级目录的完整路径

Windows 如何在命令行中获取当前目录的父目录/上级目录的完整路径,windows,batch-file,cmd,Windows,Batch File,Cmd,如下所示,我有一个名为“Current Path.bat”的批处理文件存储在“C:\a\B\”中 C:\A\B\Current Path.bat 我要做的是输出当前目录(即存储/执行批处理文件的位置)的父目录/上目录的完整路径 这种情况下的预期结果应为: C:\A\ 目前,我已经找到了一个解决办法,但它不是完美的。我想知道是否有更好的解决办法 我目前的工作是: @echo off set current_path=%cd% echo Current Path: %current_path%

如下所示,我有一个名为“Current Path.bat”的批处理文件存储在“C:\a\B\”中

C:\A\B\Current Path.bat
我要做的是输出当前目录(即存储/执行批处理文件的位置)的父目录/上目录的完整路径

这种情况下的预期结果应为:

C:\A\
目前,我已经找到了一个解决办法,但它不是完美的。我想知道是否有更好的解决办法

我目前的工作是:

@echo off 
set current_path=%cd%
echo Current Path: %current_path% 
cd ..
set upper_path= %cd%
echo Upper Path: %upper_path%
结果如下:

C:\>cd a
C:\A>cd b
C:\A\B>"Current Path.bat"
Current Path: C:\A\B
Upper Path:  C:\A

你的方法没有错;为了避免更改当前目录,您可以执行以下操作:

pushd ..
set upper_path=%CD%
popd
如果您想避免更改目录,即使是一瞬间,也可以使用
for

for %%x in ("%CD%") do set upper_path=%%~dpx

这两种方法中哪一种更具可读性是你的选择。

你的方法没有错;为了避免更改当前目录,您可以执行以下操作:

pushd ..
set upper_path=%CD%
popd
如果您想避免更改目录,即使是一瞬间,也可以使用
for

for %%x in ("%CD%") do set upper_path=%%~dpx

这两个选项中哪一个更具可读性是您的选择。

首先,感谢您的帮助。您建议的第一种方法效果很好,对于第二种方法,需要稍微修改一下才能正常工作(似乎在~dpx开始工作之前应该有2%,否则,我们将得到以下错误消息:此命令的语法不正确)。似乎正确的答案应该是:对于%%x in(“%CD%”),请设置上限路径=%%~dpx@JackChung:显然,你是对的。编辑了答案。首先,谢谢你的帮助。您建议的第一种方法效果很好,对于第二种方法,需要稍微修改一下才能正常工作(似乎在~dpx开始工作之前应该有2%,否则,我们将得到以下错误消息:此命令的语法不正确)。似乎正确的答案应该是:对于%%x in(“%CD%”),请设置上限路径=%%~dpx@JackChung:显然,你是对的。编辑了答案。