gpt4 book ai didi

powershell - Powershell从文件名中删除前导零

转载 作者:行者123 更新时间:2023-12-03 00:34:03 27 4
gpt4 key购买 nike

我有一个文件夹,其中包含几个文件,看起来像:

XXX_01_07_11_1.bat
XX_1_07_06_02.bat
XXXX_2_22_14_01_02.bat



没有特定的长度。

我想重命名文件夹中的所有文件,删除所有前导零。
例如XXX_01_07_11_1.bat将重命名为XXX_1_7_11_1.bat。

我在Bash中找到了一些方法来实现它,但是在Powershell中却没有。

最佳答案

如下应用_0+(?=[1-9])_0+(?=\d)正则表达式:

Get-ChildItem . -File -Filter "*_0*.*" |
ForEach-Object {
Rename-Item $_.FullName $($_.Name -replace '_0+(?=\d)', '_') -WhatIf
}

调试后立即删除风险缓解参数 -WhatIf(或使用 -WhatIf:$false抑制当 $WhatIfPreference变量的值为 1时自动出现的WhatIf行为,另请参见 Get-Help about_Preference_Variables )。

正则表达式说明:
  • _从字面上匹配字符_低线(下划线)
  • 0+从字面上匹配字符0
  • +量词-匹配一次和无限次,并尽可能多地匹配,并根据需要返回(贪婪)
  • ?=正向超前。断言上述_0+匹配之后是
  • [1-9][1-9]列表中的单个字符,即介于1(Unicode 49)和9(Unicode 57)之间,或
  • \d一个数字(等于[0-9]列表,但由于上面的贪婪“0+”,因此[1-9]有效)。
  • 关于powershell - Powershell从文件名中删除前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50210069/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com