2009-06-10 107 views
15

命令行再次挣扎,我已经弄清楚,我可以在一个变量保存当前的工作目录,如下所示:如何将变量设置为Windows上父目录的路径?

SET current=%cd% 

我将如何设置父关系吗? SET parent=%..%不起作用,因为它呼应%..%

基本上,调用批处理脚本C:\a\b\myscript.bat具有以下内容:

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

打印C:\a\b,我想设置变量parent,使其将打印C:\a而不改变当前的工作目录到..

这可能吗?

回答

33

向上移动目录,想起了电流,设置父,然后在弹出下来的目录,回到你开始

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

echo current %current% 
echo parent %parent% 
+0

完美!我现在记得看到了推动和弹出的地方,但它完全放弃了我的想法。谢谢你的帮助。 – 2009-06-10 13:28:14

+0

你不仅仅是欢迎队友:) – 2009-06-10 13:30:25

2

使用

pushd targetFolder 
set current=%cd% 
popd 

PUSHD/POPD保持堆栈以前访问过的目录。

+0

也谢谢你的帮助 – 2009-06-10 13:29:41

8

你也可以做这样的事情:

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

它不给你父的规范名称,但它始终应该是父文件夹的有效路径。它也会比涉及pushd和popd的解决方案稍快,但这不会是批处理文件中的主要考虑因素。

编辑:请注意,如果当前文件夹是驱动器的根目录,那么到目前为止,包括我的这里在内的所有解决方案都会出现问题。没有一种干净而简单的方法,因为在用户模式下确实没有驱动器的父级可见。

相关问题