代码之家  ›  专栏  ›  技术社区  ›  dellair

ClearCase标记文件的父文件夹

  •  1
  • dellair  · 技术社区  · 8 年前

    对于给定的文件路径,如何标记所有父文件夹直到VOB级别?

    例如,文件路径:\VOB1\dir1\subdr1\moredir1\file1.xml

    我希望用LABEL1标记以下元素:

    \VOB1\dir1\subdir1\moredir1\file1.xml
    \VOB1\dir1\subdir1\moredir1
    \VOB1\dir1\subdir1
    \VOB1\dir1
    

    使用mklabel命令,操作简单:

    cleartool mklabel LABEL1 \VOB1\dir1\subdir1\moredir1\file1.xml \VOB1\dir1\subdir1\moredir1 \VOB1\dir1\subdir1 \VOB1\dir1
    

    然而,我希望能够智能地计算路径。

    mklabel-rec的参数不适合此目的,因为顶级父文件夹可能包含许多其他文件/目录。

    有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Aacini    8 年前
    @echo off
    setlocal EnableDelayedExpansion
    
    set "filePath=\VOB1\dir1\subdir1\moredir1\file1.xml"
    set "wantedParent=VOB1"
    
    set "thisPath="
    set "labelPaths="
    set "labelThisPath="
    if "%filePath:~0,1%" equ "\" set "filePath=%filePath:~1%"
    for %%a in ("%filePath:\=" "%") do (
       set "thisPath=!thisPath!\%%~a"
       if defined labelThisPath (
          set "labelPaths=!thisPath! !labelPaths!"
       ) else if "%%~a" equ "%wantedParent%" (
          set "labelThisPath=true"
       )
    )
    
    ECHO cleartool mklabel %labelPaths%
    

    输出:

    cleartool mklabel \VOB1\dir1\subdir1\moredir1\file1.xml \VOB1\dir1\subdir1\moredir1 \VOB1\dir1\subdir1 \VOB1\dir1
    
        2
  •  0
  •   VonC    8 年前

    由于没有本机方法获取父文件夹列表(除非 cleartool lsfolder -ancestor 工作),您只需“cd..”直到mklabel失败(这意味着您不在vob中)

    cleartool mklabel LABEL1 . || exit
    cd ..
    

    在bash中:

    while true; do cleartool mklabel LABEL1 . || exit; cd ..; done