如何在Azure DevOps YAML管道中用表达式提取路径文件名
仅用Expression提取文件名的实现方案
如果你的管道表达式支持字符串拆分(split)和长度计算(length),可以通过以下方式提取文件名:
- 先将完整路径按目录分隔符(比如
/)拆分成数组,再取数组的最后一个元素:
注意:如果路径末尾带有目录分隔符(比如split(source, '/')[length(split(source, '/')) - 1]/path/to/file/),这个方法会得到空字符串,需要先移除末尾的分隔符,比如结合trimEnd函数(如果支持):split(trimEnd(source, '/'), '/')[length(split(trimEnd(source, '/'), '/')) - 1]
如果你的管道表达式支持正则替换,可以用正则匹配最后一个目录分隔符之前的所有内容并替换为空:
- 针对Unix风格路径(
/分隔):replace(source, '^.*\/', '') - 针对Windows风格路径(
\分隔),需要转义反斜杠:replace(source, '^.*\\', '')
如果需要同时兼容两种路径风格,可以结合条件判断(如果表达式支持),先判断路径中哪种分隔符存在,再选择对应的处理逻辑。
内容的提问来源于stack exchange,提问作者Craig Brown
相关产品推荐
相关产品推荐

