ドライブ間で大量のファイルを頻繁にコピーする必要があり、プロセスが頻繁に開始および停止されます。posixシェルでは、既存のファイルを上書きしないために使用できますが、powershellcp -n
には同等の「上書きしない」スイッチがないようです。copy-item
つまり、プロセスを停止して開始する必要がある場合は、使用する必要があります
ls -Recurse|%{
if (-Not(test-path($_fullname.replace("D:\", "E:\")))){
cp $_.fullname $_.fullname.replace("D:\", "E:\");
}
}
test-path
問題なく動作しますが、コピーするファイルが 100 万個ある場合、時々起こることですが、毎回実行しなければならないオーバーヘッドが発生すると思います。
編集:ところでrobocopy.exe d:\thedir e:\thedir /XN /XO /S
、試してみましたが、すでに存在するファイルをスキャンするのに永遠にかかりました。上記のスクリプトを使用していて、大きなセッションの途中である場合、新しいファイルのコピーを開始する前に数秒の一時停止があります。robocopy を使用すると、コピーを開始する前に、既にコピーされたファイルを実行するのに何分も費やしていました。