2016-06-30 9 views
2

PowerShell内で5日以上経過したフォルダ内のすべてのファイルの名前を変更しようとしています。Powershellの部分ファイル名を置換する

ファイル名のすべてのように読んで:

XTYPE -to- CoOrd & WBS - 20140313 
XTYPE -to- CoOrd & WBS - 20140314 

など 時折のようないくつかのわずかな異常があるでしょう:

XTYPE -to- CoOrd & WBS - 20140316 - do not use 
XTYPE -to- CoOrd & WBS - 20140314 (AutoSaved) 

今、私は単純に「& WBS」を削除したいです各ファイル(すべてがファイル形式になるようにExcel形式で保存されています)

XTYPE -to- CoOrd- 20140313 
XTYPE -to- CoOrd- 20140314 
XTYPE -to- CoOrd- 20140316 - do not use 
XTYPE -to- CoOrd- 20140314 (AutoSaved) 

は今、私のコードは、これまでのところ、私はそこに十分近いと信じて...

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\' 
ForEach ($File in Get-Childitem $myFolder | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-5)}) 

は、だから私は、フォルダを設定し、わずか5日以上古いアイテムに対処するためのPowerShellを助言しています。

しかし、私は部分文字列要素を置き換えることができません...おそらく本当に単純な私はそれを見ることができません。私はインターネットを精査し、あらゆる種類の反復を試みましたが、それは起こっていません。

だから私は、その後読んソリューションに最も近いことを信じて、私の最後の要素...

{ 
$myFile = $file.name 
$myFullFilename = $file.FullName 
$myRenamed = $myFile.Replace(" & WBS ","") 
} 

容易にするためにその全体がスクリプト?

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\' 
ForEach ($File in Get-Childitem $myFolder | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-5)}) 
{ 
$myFile = $file.name 
$myFullFilename = $file.FullName 
$myRenamed = $myFile.Replace(" & WBS ","") 
} 

私の間違いでのあなたの助けと指針はこれまでと同じくらい大変に評価されています!

答えて

2

Where-Objectコマンドレットを拡張し、& WBSを含むすべてのベース名をフィルタリングします。次に、Rename-itemコマンドレットを使用してファイルの名前を変更します。

$myFolder = '\\iiGlasgow.co.uk\public\Controls\Archived Files\' 
Get-Childitem $myFolder | 
    Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-5) -and $_.BaseName -Match ' & WBS ' } | 
    Foreach { 
     $_ | Rename-Item -NewName ($_.Name -replace ' & WBS ') 
    } 
関連する問題