2017-03-28 2 views
1

スクリプトを使用して拡張子.xmlのファイルの名前を変更しています。私は、最初の6文字を削除し、ファイル名をわずか11文字に切り捨てる必要があります。これまでのところ私はスクリプトを持っています:部分文字列抽出を使用してファイルの名前を変更する

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

このスクリプトは、11かそれ以降の文字列の中のどの文字も削除することができますか?

たとえば、名前がexport12345678910112.xmlのファイルは、12345678910.xmlになります。

ファイル名の長さは、拡張子を除いて常に11文字でなければなりません。

答えて

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 

は、サンプル・ファイル名を持つソリューションを実証するために、
関連する問題