5

次のスクリプトは、14日より古い名前付きディレクトリ内のファイルを削除.txtし、パスと削除されたファイルを使用してに書き込みます(このスクリプトは別のフォーラムで見つかりました。

dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif

私は3つの質問があります:

  1. 何が-lt何で何が-le-gtですか?それぞれをいつ使用しますか
  2. 上記のスクリプトはファイルのみを削除します...フォルダも削除するにはどうすればよいですか?
  3. 上記のスクリプトは、LastWriteTime..時間についてはどうCreatedDateですかLastAccessed
4

2 に答える 2

9

わかりました、ここに行きます:

  1. -lt、-le、および-gtは比較演算子です。ltはより小さいことを意味し、leはより小さいか等しいことを意味し、gtはより大きいことを意味します。

  2. フォルダ内に何が入るかを制御できない場合、フォルダの削除は危険になる可能性があります。問題が発生する可能性があります。データの損失に注意してください。オプションを操作するだけで、同じRemove-Itemコマンドレットを使用してフォルダーを削除できます。この記事をチェックしてください、それを達成する方法についての素晴らしい指示があります: http ://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887,00.html

  3. 通常、しばらくそこに置かれているファイルの場合、LastWriteTimeとCreatedDateおよびLastAccessTimeは同じになります。DLLのような読み取り専用ファイルでは、LastAccessTimeは他の2つよりも新しい場合があります。読み取り/書き込みファイル(Outlookのpstファイルなど)では、WriteTimeとAccessTimeが同じである可能性があります。基本的に、それは完全にあなた次第です。これらは、LastWriteTimeと同じように機能します。削除するファイルの性質を考慮して、先に進んでください。

于 2009-05-06T02:32:33.543 に答える
3

-lt -leと-gtは、<、<=、>ではなく比較演算子です。powershellコマンドプロンプトで「helpabout_Comparison_Operators」と入力して、各タイプの詳細と、他の言語で使い慣れているタイプの代わりにこれらを使用する理由を確認してください。

フォルダも削除するには、 !$。PsIsContainerとwhereフィルタの一部を削除する必要があります。これにより、ディレクトリであるリストからすべてのアイテムが削除されます。

「CreatedDateまたはLastAccessedtimeはどうですか」という質問で何を求めているのかわかりませんが、LastWriteTimeと同様の方法でこれらのプロパティを使用できますが、実現しようとしているロジックを決定する必要があります。

于 2009-05-06T02:27:20.840 に答える