如何在命令行(批处理)中获取父目录

时间:2013-11-19 19:54:59

标签: batch-file

Folder结构是

c:\ yyyy \ 4 \ _build \ file.cmd

我尝试了执行此脚本的文件.cmd文件

SET Source=c:\CompilationStaging\{THIS}\%FolderName%
{THIS}部分中的

我需要在这种情况下父目录的父级是4

感谢

2 个答案:

答案 0 :(得分:2)

for循环中,%~nI替换提取变量I的文件或目录名称。考虑到这一点,并且知道父目录的父目录是..\..

for %%a in ("..\..") do ( set "target=%%~na" )

然而,在你给出的例子中," 4"是父目录。不是父母的父母。因此,在您的情况下,您使用..代替..\..

C:\yyyy\4\_build>type paths.cmd
@echo off
for %%a in ("..") do ( set "target=%%~na" )
echo %target%
C:\yyyy\4\_build>paths
4

答案 1 :(得分:1)

试试这个(!parentNameOfParent!是所需的值):

@echo off
setlocal enabledelayedexpansion

set fileP="c:\yyyy\4\_build\file.cmd"
for %%a in (%fileP%) do (
    set parent=%%~dpa
    cd !parent!\..
    set PPPath=!cd!
    for %%x in ("!PPPath!") do (
        set parentNameOfParent=%%~nx
    )
)

echo !parentNameOfParent!