【问题标题】:Getting parent directory not working in windows 8 batch file获取父目录在 Windows 8 批处理文件中不起作用
【发布时间】:2014-11-21 01:46:06
【问题描述】:

我有一个文件夹结构

c:\name\myname

我写了一个批处理文件

test.bat

@echo off  
echo %CD%  
echo %CD%\..  
set k=%CD%  
set c=%k%\..  
echo %k%  
echo %c%  
pause

输出

c:\name\myname  
c:\name\myname\\..  
c:\name\myname  
c:\name\myname\\..

预期输出

c:\name\myname  
c:\name  
c:\name\myname  
c:\name

我已经安装了 Windows 8 操作系统。我想从当前目录获取父目录。可能是我不知道获取父目录的正确语法。

【问题讨论】:

标签: windows batch-file windows-8


【解决方案1】:

有两种方法可以获取文件/文件夹的引用:批处理文件的参数和for 命令。第二个选项是我们将在这里使用的。由于不清楚你需要什么父母,让我们看看如何获​​得每个

1 - 获取当前活动目录的父级

for %%a in (..) do echo %%~fa

for 可替换参数%%a 中获取对当前活动文件夹父级的引用,一旦我们有了引用,就获取它的完整路径

2 - 获取保存批处理文件的文件夹的父级

for %%a in ("%~dp0.") do echo %%~dpa

同样的想法。 %0 是对当前批处理文件的引用,所以%~dp0 是存储批处理文件的驱动器和路径。该值以反斜杠结尾,因此,为了获得对文件夹的引用,添加了一个附加点。一旦我们引用了%%a 中保存批处理文件的文件夹,%%~dpa 将返回存储%%a 中引用的元素的驱动器和路径。由于%%a 是保存批处理文件的文件夹,%%~dpa 是父文件夹,即存储批处理文件夹的文件夹。

【讨论】:

  • 假设我有一个像 c:\user\myname\check\test 这样的结构,我需要一个路径作为 c:\user\myname。我怎样才能得到它?
  • @Kumar, for %%a in ("c:\user\myname\check\test\..\..") do echo %%~fa
  • @kumar,或者以相对的方式for %a in (..\..) do echo %~fa
  • 非常感谢。我明白了。
猜你喜欢
  • 2023-03-12
  • 2012-07-07
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2013-06-08
  • 1970-01-01
相关资源
最近更新 更多