2016-07-05 31 views
1

私はこのフォルダ内にZというルートフォルダ(マップされたネットワークドライブ)を持っています。Archiveという名前のフォルダがあります。フォルダをアーカイブするPowerShellを使用して同じフォルダ内の別のフォルダに再帰的にフォルダを移動する

移動するフォルダのタイトルは、私がcsvファイルに持っています。

私はPowerShellスクリプトを作成しましたが、どういうわけか実際には機能しません。フォルダを1つ移動しますが、PowerShellコマンドでも何も起こりません。何も起こりません。 PowerShellウィンドウ。

コピーするフォルダが10個ある場合は、最初のフォルダのみが移動されます。ここで

はコードです:1つのフォルダのみを移動しますなぜ私は表示されませんが、あなたがはるかに高速である必要があり、次のスクリプトを試みることができる

Title 
12345 
22223 
75687 
... 
+0

あなたは 'CSVFile.csv'を提供することができます –

+0

投稿に追加されましたが、特別なものはありません... – Alnedru

答えて

1

を次のように

$currentPath = Split-Path -Parent $PSCommandPath; 
$areaCsvPath = $currentPath + "\CSVFile.csv"; 
write-host $areaCsvPath; 

$csv = Import-Csv $areaCsvPath; 
$count =0; 

$Creds = Get-Credential 

foreach ($row in $csv) 
{ 
    Get-ChildItem -Path "Z:\" -Recurse | 
     Where-Object {$_.name -eq $row.Title} | 
     Move-Item -destination "Z:\_Archive" -Credential $Creds 

    $count++; 
    write-host $count; 

} 

CSVですのでGet-ChildItemコマンドレットは一度だけ呼び出されます。

$currentPath = Split-Path -Parent $PSCommandPath; 
$areaCsvPath = $currentPath + "\CSVFile.csv"; 
write-host $areaCsvPath; 

$csv = Import-Csv $areaCsvPath; 
$Creds = Get-Credential 

Get-ChildItem -Path "Z:\" -Recurse | 
     Where-Object Name -in ($csv | select -expand Title) | 
     Move-Item -destination "Z:\_Archive" -Credential $Creds 

フォルダの場合Z:の最上位にある場合は、-Recurseパラメータを省略してください。また、フォルダの移動のみを行う場合は、Get-ChildItem呼び出しに-Directoryスイッチを追加して、パフォーマンスをさらに向上させることもできます。

+0

はい私はフォルダを移動する必要がありますが、フォルダにはコンテンツ、その他のサブフォルダとアイテムがあります。 -recurseを削除して-directoryを追加する必要がありますか? – Alnedru

+0

はい、試してみてください。 –

+0

Btw奇妙なエラーが表示されます:Move-Item:ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。移動項目 - 宛先 "Z:\ _アーカイブ"; – Alnedru

関連する問題