我只想重命名不符合名称格式准则的.csv
文件。其他所有编号不正确的文件都可以。
正确:
31_12_99-01.csv
01_01_00-88.csv
不正确:
2_1_00-01.csv
我需要帮助识别小于10(仅一位数字)的数字。
Get-ChildItem *.csv -Name |Where{$_.Name -match '\d+'}
重命名后,powershell应该显示所有重命名的文件(新文件名),因此我可以选择将此列表保存到rename.cfg
。
答案 0 :(得分:0)
get-childitem *.csv |
where name -match '(\b|_)\d_' |
rename-item -newname { $_.name -replace '(\b)(\d_)','${1}0$2' -replace '(_)(\d_)','${1}0$2' } -whatif -passthru
What if: Performing the operation "Rename File" on target "Item: C:\Users\js\foo\2_1_00-01.csv Destination: C:\Users\js\foo\02_01_00-01.csv".
# why doesn't this work? I guess because the patterns overlap
# rename-item -newname { $_.name -replace '(\b|_)(\d_)','${1}0$2' } -whatif -passthru
编辑:后向为负数,前向为负数,甜美。 regex: find one-digit number
get-childitem *.csv |
where name -match '(?<!\d)\d(?!\d)' |
rename-item -newname { $_.name -replace '(?<!\d)(\d)(?!\d)','0$1' } -whatif -passthru