私は、指定された日数より古いファイルを削除し、提供されたディレクトリを通過するインターンシップのための簡単なスクリプトを書いた。私は今日、私の自由な時間をすべてそれを締めようと努力しました。ここで私はこれまで持っているものです。ここで このスクリプトをさらに高速化できますか?
function delOld($dir, $numDays){
$timespan = new-timespan -days $numDays
$curTime = get-date
get-childItem $dir -Recurse -file |
where-object {(($curTime)-($_.LastWriteTime)) -gt $timespan} |
remove-Item -whatif
}
は、関数の呼び出しの例です:読書の難しさのため
delOld -dir "C:\Users\me\Desktop\psproject" -numDays 5
申し訳ありませんが、私が見つかりました。その1つのラインに操作を凝縮それぞれの反復で読みやすい変数に再割り当てするよりも効率的でした。テストの目的で、現在、アイテムの削除が行われています。私はこの時点では、おそらくそれほど高速化できないことを知っていますが、私はそれを1 TBのファイルで実行しているので、すべての操作が重要です。
アドバイスをいただきありがとうございます。
をしようとした場合。私は本当にそれがおそらく仕事を捨てるように設計以外のより速くなるかもしれないか分からないのですか?しかし、そのような再設計は、とにかくスピードの増加を否定するでしょう – pointerless
Log Parserを試しましたか? –
99%の時間が物理ディスクを読み込む 'Get-ChildItem'に費やされるので、スピードを上げる方法があれば、[Everything's API](http://www.voidtools.com)を使ってディスクのMFTを直接読み込みます。/support/everything/sdk /)(時間/日付のインデックス作成を有効にする必要があります)。 – wOxxOm