私は最近、たくさんの小さなtxtファイルを含むサブフォルダを、多くの異なるサブフォルダとファイルを含む大きなディレクトリから引き出すのに役立つ小さなスクリプトを書いています。コピーアイテムのスローネス - 5500ファイルをフィルタリングしてコピーするのに40分かかりますか?
外部ハードディスクからtxtファイルを含む約17GBのフォルダ(約5,500ファイルを含む〜100個のフォルダ)をローカルドライブにコピーしました。接続はUSB 2.0でした。
これを行うには約40分かかりました。なぜこれほど長い時間がかかりましたか?
私のコードや古いデータ接続の速度が遅いのか?今後どのようなショートカットを取ることができますか? robocopyはコピーアイテムよりも本質的に速いのですか?もしそうなら、なぜですか?
$mainDir = Get-ChildItem 'E:\Some Big Directory\' -Recurse | Where {$_.Mode -match 'd'} | % {$_.FullName}
ForEach($dir in $mainDir){
if($dir.ToString() -match 'SubfoldersIWant'){
Copy-Item -Path $($dir + '\TheActualFolderIWant\*') -Destination 'C:\somwhere' -Recurse
}
}
フォルダ構造は、(ダウンサイズWAY)を次のように多少です:
Get-ChildItem 'E:\Some Big Directory' -Directory -Recurse | Where {$_.FullName -match 'SubfoldersIWant'} | Copy-Item -Destination 'C:\somwhere' -Recurse
この方法では、フィルタリングがはるかに高速です:
Some Big Directory -SubfoldersIWant1 -subFolderIDontwant -random.txt -subFoldersIWant -*.txt -rando.jpg -I dont want this folder -random junk -SubfoldersIWant2 -subFolderIDontwant -random.txt -subFoldersIWant -*.txt -rando.jpg -dontwantthiseither.jpg
私は最初の行の '%{$ _。fullname}'を 'select -expand fullname'に置き換えます。 – Vesper
USB2はUSB3よりも10倍遅いので、頻繁にこれを行う予定がある場合は、ドライブのアップグレードについて考えてみてください。 @JamesC。 –
おかげで十分なドライブは3.0ですが、私の現在のワークステーションは2.0しかない古いdellです:( – Christopher