使用子字符串提取重命名文件
Rename files using substring extraction
我正在使用脚本重命名扩展名为 .xml 的文件。我需要删除前 6 个字符并将文件名截断为仅 11 个字符。到目前为止我有脚本:
Get-ChildItem -Filter "*.xml" | Rename-Item -newname { $_.name.substring(6)}
我怎样才能让这个脚本删除字符串中第 11 位或之后的任何字符?
例如,名称为 export12345678910112.xml
的文件将导致 12345678910.xml
.
文件名的长度始终要求只有 11 个字符,不包括扩展名。
将 -replace
运算符与正则表达式一起使用可能是最佳选择:
Get-ChildItem -Filter "*.xml" |
Rename-Item -newname { $_.name -replace '^.{6}(.{11}).*(\.xml)$', '' } -WhatIf
-WhatIf
预览重命名操作;删除它以执行实际重命名。
使用示例文件名演示解决方案:
> 'export12345678910112.xml' -replace '^.{6}(.{11}).*(\.xml)$', ''
12345678910.xml
我正在使用脚本重命名扩展名为 .xml 的文件。我需要删除前 6 个字符并将文件名截断为仅 11 个字符。到目前为止我有脚本:
Get-ChildItem -Filter "*.xml" | Rename-Item -newname { $_.name.substring(6)}
我怎样才能让这个脚本删除字符串中第 11 位或之后的任何字符?
例如,名称为 export12345678910112.xml
的文件将导致 12345678910.xml
.
文件名的长度始终要求只有 11 个字符,不包括扩展名。
将 -replace
运算符与正则表达式一起使用可能是最佳选择:
Get-ChildItem -Filter "*.xml" |
Rename-Item -newname { $_.name -replace '^.{6}(.{11}).*(\.xml)$', '' } -WhatIf
-WhatIf
预览重命名操作;删除它以执行实际重命名。
使用示例文件名演示解决方案:
> 'export12345678910112.xml' -replace '^.{6}(.{11}).*(\.xml)$', ''
12345678910.xml