是否可以使用 PowerShell(Windows 7)定位文件名中的特定分隔符并将该分隔符从下划线更改为连字符/破折号?
例如:
1942.009.405_SIENESE 16TH CENTURY__1988_09_08_DATA REPORT_TX_4305010_0002.pdf
到
1942.009.405_SIENESE 16TH CENTURY__1988-09-08_DATA REPORT_TX_4305010_0002.pdf
如果文件名中缺少日期或缺少部分日期,则任何命令提示符是否能够处理这种异常?
答案1
如果您只想将所有下划线改为破折号,您可以这样做:
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '_','-' }
答案2
您可以使用正则表达式替换:
$test = '1942.009.405_SIENESE 16TH CENTURY__1988_09_08_DATA REPORT_TX_4305010_0002.pdf'
$test -replace '^(.+\d{4})_(\d{2})_(\d{2}.+)$', '$1-$2-$3'
它会查找所有字符,最多为四位数字,然后是下划线,然后是两位数字,然后是另一个下划线,然后是两位数字和其余字符。然后,它会将所有内容替换为第一个找到的$1 = (.+\d{4})
破折号的位,第二个位是$2 = (\d{2})
另一个破折号,然后是其他所有内容$3 = (\d{2}.+)