PowerShell:批处理文件重命名下划线为连字符

PowerShell:批处理文件重命名下划线为连字符

是否可以使用 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 '_','-' }

看一眼官方文档中的示例 4Rename-Item

答案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}.+)

相关内容