You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:02:39