2012-03-23 21 views
1

私はあるディレクトリから別のディレクトリにファイルを移動するためにスクリプトを使用しています。また、いくつかのテキストをRegExの作業によって取り除いています。しかし、私は比較的短い脚本を持っていますが、私はまだもっとうまくいくと思います。以下は私のサンプルスクリプトです。今ファイルの名前を変更して正規表現を使用してファイル名を「クリーンアップ」しながらMove-Item

$Source = "C:\temp\test\source" 
$Dest = "C:\temp\test\dest" 

get-childitem $Source\*.* | rename-item -newname {$_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.',''} -WhatIf 
move-item $Source\*.* $Dest -WhatIf 

、これは動作しますが、あなたが見ることができるように、それは二行だと私はそれが1で行うことができますかなり確信しています。私はmove-itemコマンドから「私のお金が価値がない」と思っています。別のrename-itemコマンドを実行しなくても、これをどのように達成できますか?もっと情報が必要な場合は、私に知らせてください。私は何ができるかを見ていきます。私はPSやRegExのものではなく、新しいものです。私はバッチファイルをさらに扱っていますが、RegExを扱うことはできません。だから私はPSを試みている。

答えて

5

Move-Itemコマンドレットのdestinationパラメーターでregex replaceを使用できます。それはあなたのために仕事をする必要があります。あなたの例を適用する:

$Source = "C:\temp\test\source" 
$Dest = "C:\temp\test\dest" 

get-childitem $Source | Foreach-Object { 
    Move-Item -Path $_.FullName -Destination "$Dest\$($_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.','')" -WhatIf 
} 
+0

私はとても近かったです!私は似たようなことをしゃべっていて、間違った場所にかっこ(と他のもの)がありました。とにかく、それは治療を働いた!大変ありがとう! – RKillcrazy

関連する問題