Power Automate使用replace()移除_anonymous时文件名丢失内容求助
解决Power Automate中移除文件名_anonymous时丢失内容的问题
问题分析
你当前使用的replace表达式在处理以数字+英文句号开头的文件名时出现异常,仅保留数字和句号部分,核心原因大概率是对SharePoint文件属性的字段引用有误,或是直接处理完整文件名时因特殊开头触发了意外的解析逻辑。
解决方案
以下提供两种可靠的解决方式,任选其一即可:
方式1:修正字段引用并直接替换
Power Automate中Get file properties返回的完整文件名(含扩展名)对应的字段是Name,而非带大括号的{Name}。将表达式修改为:
replace(outputs('Get_file_properties')?['body/Name'], '_anonymous', '')
注:无需额外用
string()包裹,因为Name字段本身就是字符串类型。
方式2:拆分文件名与扩展名后处理(更稳妥,适配含多个点的文件名)
如果文件名中存在多个英文句号(比如18.-ITP.v2_anonymous.pdf),可以先拆分文件名和扩展名,单独处理文件名部分后再拼接:
- 获取不带扩展名的文件名:
join(take(split(outputs('Get_file_properties')?['body/Name'], '.'), sub(length(split(outputs('Get_file_properties')?['body/Name'], '.')), 1)), '.')
- 获取文件扩展名:
last(split(outputs('Get_file_properties')?['body/Name'], '.'))
- 组合最终文件名:
concat(replace(join(take(split(outputs('Get_file_properties')?['body/Name'], '.'), sub(length(split(outputs('Get_file_properties')?['body/Name'], '.')), 1)), '.'), '_anonymous', ''), '.', last(split(outputs('Get_file_properties')?['body/Name'], '.')))
验证测试
用你提供的测试文件名18.-ITP#005_SHST-219I_QUANTUM PACKER_C23P-071_anonymous.pdf测试上述表达式,会得到期望的结果:18.-ITP#005_SHST-219I_QUANTUM PACKER_C23P-071.pdf
内容的提问来源于stack exchange,提问作者Ronny Amores
相关产品推荐
相关产品推荐

