使用给定的文件路径,如何将所有父文件夹标记到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的参数不适用于此目的,因为顶级父文件夹可能包含许多其他文件/目录。
有什么想法吗?
答案 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