2016-01-15 86 views
1

使用給定的文件路徑,如何標記所有父文件夾直到VOB級別?ClearCase標籤文件的父文件夾

例如,文件路徑:\ 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的參數不適合此目的,因爲頂級父文件夾可能包含許多其他文件/目錄。

任何想法?

回答

1
@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 
+0

我打算將此作爲一種好方法。謝謝, – dellair

0

由於沒有得到父母的文件夾列表(除非cleartool lsfolder -ancestor作品)沒有本土的方式,只需將「CD ..」,直到mklabel失敗(這將意味着你是VOB外)

cleartool mklabel LABEL1 . || exit 
cd .. 

在bash:

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