0
以下の機能は、ディレクトリ構造を平坦化し、最後に選択した書き込み日に基づいてファイルをコピーします。PowerShell Flatten Directory構造
function mega-copy($srcdir,$destdir,$startdate,$enddate)
{
$files = Get-ChildItem $SrcDir -recurse | Where-Object { $_.LastWriteTime -ge "$startdate" -and $_.LastWriteTime -le "$enddate" -and $_.PSIsContainer -eq $false };
$files|foreach($_) {
cp $_.Fullname ($destdir+$_.name) -Verbose
}
}
これは、小さいディレクトリの非常に成功しているが、複数のサブディレクトリとファイルとディレクトリのためにそれを使用しようとすると、数十万人から数千万人に至るまでカウントしたとき、それは単に失速。これを実行して24時間放置すると、1つのファイルがコピーされたり、PowerShellコンソールウィンドウに何も表示されたりしませんでした。この特定の例では、およそ2,700万のファイルがありました。
しかし、非常に遅いですが、単純なバッチファイルは何の問題もなくジョブを実行しました。
私はここで助けていただきありがとうございます。
:
を使用して、単純に-fileスイッチを使用して、そして答えは、この結果として私のスクリプトにはいくつかの簡単な変更だったとは対照的に、というカップルhttp://stackoverflow.com/a/39657987/3959875 – wOxxOm
これは、robocopyがより適していて、wOxxOmのように、ファイルを変数に保存しないと言うことです。パイプラインを使用してください。少なくともPowerShell 3.0をお持ちの場合は、Get-Childitemの '-File'スイッチを使用することもできます。 – Matt
ニース。どちらも私に関連性のある情報を提供し、この方法で大量のデータを移動するのにかかる時間を短縮するように見えました。どうもありがとうございます。 – GreatMagusKyros