ClearCase标签文件的父文件夹

时间:2016-01-15 10:35:43

标签: batch-file clearcase

使用给定的文件路径,如何将所有父文件夹标记到VOB级别?

例如,文件路径:\ VOB1 \ dir1 \ subdir1 \ 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 个答案:

答案 0 :(得分:1)

b.bar

输出:

@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%

答案 1 :(得分:0)

由于没有本地方式来获取父文件夹列表(除非cleartool lsfolder -ancestor有效),否则您只需要“...”。'直到mklabel失败(这意味着你在vob之外)

cleartool mklabel LABEL1 . || exit
cd ..

在bash中:

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