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

Regex 使用子字符串提取重命名文件,regex,powershell,file-rename,substring,Regex,Powershell,File Rename,Substring,我正在使用脚本重命名扩展名为.xml的文件。我需要删除前6个字符,并将文件名截断为仅11个字符。到目前为止,我有一个脚本: Get-ChildItem -Filter "*.xml" | Rename-Item -newname { $_.name.substring(6)} 我怎样才能让这个脚本删除字符串中11位或11位之后的任何字符 例如,名为:export12345678910112.xml的文件将导致12345678910.xml 除扩展名外,文件名的长度始终要求仅为11个字符。使用

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

Get-ChildItem -Filter "*.xml" | Rename-Item -newname { $_.name.substring(6)} 
我怎样才能让这个脚本删除字符串中11位或11位之后的任何字符

例如,名为:
export12345678910112.xml
的文件将导致
12345678910.xml


除扩展名外,文件名的长度始终要求仅为11个字符。

使用
-用正则表达式替换
运算符可能是最佳选择:

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