如何用PowerShell给字符串中间补零并转换文件名格式
PowerShell文件名格式化解决方案
直接上实现代码,完全匹配你的需求:
批量转换文件名(仅输出结果)
# 待转换的文件名列表 $fileNames = '1.2.2', '1.2.3', '1.2.4', '1.10.1', '1.10.2' foreach ($name in $fileNames) { # 按小数点拆分字符串(转义小数点是因为它在正则里是通配符) $parts = $name -split '\.' # 拼接目标格式:第一部分直接保留,第二、第三部分补前导零到3位 $formattedName = "{0}_{1}_{2}" -f $parts[0], $parts[1].PadLeft(3, '0'), $parts[2].PadLeft(3, '0') # 输出转换结果 $formattedName }
执行后输出结果:
1_002_002 1_002_003 1_002_004 1_010_001 1_010_002
实际文件重命名(针对磁盘中的真实文件)
如果要直接重命名本地文件,比如当前目录下的对应文件,用这段代码:
# 获取当前目录下符合「数字.数字.数字」格式的文件(可根据实际扩展名调整Filter) Get-ChildItem -Filter "*.*.*" | Where-Object { $_.BaseName -match '^\d+\.\d+\.\d+$' } | ForEach-Object { $parts = $_.BaseName -split '\.' # 拼接新文件名,保留原扩展名 $newFileName = "{0}_{1}_{2}{3}" -f $parts[0], $parts[1].PadLeft(3, '0'), $parts[2].PadLeft(3, '0'), $_.Extension # 执行重命名操作 Rename-Item -Path $_.FullName -NewName $newFileName }
核心逻辑说明
-split '\.':将文件名按小数点拆分成数组,例如1.2.2会拆成@('1','2','2')PadLeft(3, '0'):给字符串左侧补0,直到长度为3,比如'2'转为'002','10'转为'010'-f格式化运算符:快速将多个变量拼接成指定格式的字符串,比普通字符串拼接更简洁可靠
内容的提问来源于stack exchange,提问作者Jarrod Harkness
相关产品推荐
相关产品推荐

