使用子字符串提取重命名文件

时间:2017-03-28 15:27:33

标签: regex powershell file-rename substring

我正在使用脚本重命名扩展名为.xml的文件。我需要删除前6个字符并将文件名截断为仅11个字符。到目前为止,我有脚本:

Get-ChildItem -Filter "*.xml" | Rename-Item -newname { $_.name.substring(6)} 

我怎么能让这个脚本删除字符串中11或之后的所有字符?

例如,名称为export12345678910112.xml的文件会生成12345678910.xml

除扩展名外,文件名的长度始终只需要11个字符。

1 个答案:

答案 0 :(得分:1)

-replace运算符与正则表达式一起使用可能是最佳选择:

Get-ChildItem -Filter "*.xml" |
  Rename-Item -newname { $_.name -replace '^.{6}(.{11}).*(\.xml)$', '$1$2' } -WhatIf

-WhatIf预览重命名操作;删除它以执行实际重命名。

使用您的示例文件名演示解决方案:

> 'export12345678910112.xml' -replace '^.{6}(.{11}).*(\.xml)$', '$1$2'
12345678910.xml