ここであなたたちのための挑戦:
サブフォルダーのリストを生成するためのいくつかの方法(できれば組み込みですが、F/OSSサードパーティアプリも検討される場合があります)が必要です特定のレベルでと一緒に(またはより良い) 、フィルタリング)「変更日」。フォルダのリストが必要であることに注意してくださいのみ-出力はファイルを除外する必要があります。
例:
フォルダ構造の場合:
C:
\---Reports
+----Task1
| \----Report1
| +----CSV
| +----HTML
| \----XML
+----Task2
| +----Report1
| | +----CSV
| | +----HTML
| | \----XML
| +----Report2
| | +----CSV
| | +----HTML
| | \----XML
| \----Report3
| +----CSV
| +----HTML
| \----XML
\----Task3
+----Report1
| +----CSV
| +----HTML
| \----XML
\----Report2
+----CSV
+----HTML
\----XML
リストに次のような情報を含めたいのですが。
PATH | MODIFIED
=============================|==========
C:\Reports\Task1\Report1 | 6/23/2011
C:\Reports\Task2\Report1 | 6/17/2011
C:\Reports\Task2\Report2 | 6/30/2011
C:\Reports\Task2\Report3 | 7/06/2011
C:\Reports\Task3\Report1 | 6/22/2011
C:\Reports\Task3\Report2 | 7/13/2011
(「Report#」フォルダーのレベルより上または下のフォルダーは除外されることに注意してください。)
または、理想的には、次のようなレポートを生成できるものが必要です。
PATH | MODIFIED
=============================|==========
C:\Reports\Task1\Report1 | 6/23/2011
C:\Reports\Task2\Report1 | 6/17/2011
C:\Reports\Task2\Report2 | 6/30/2011
C:\Reports\Task3\Report1 | 6/22/2011
=============================|==========
TOTAL | 4
(これは、特定の日付範囲に制限された、前のリストのフィルター処理されたバージョンを表すことに注意してください。)
これは、Windows XP/2003で実行される予定です。 PowerShellが利用可能です。繰り返しになりますが、利用可能な組み込みユーティリティを使用したいのですが、F/OSSツールも検討される可能性があります。
パワーシェル:
_gci C:\Reports\*\* | where {$_.LastWriteTime -gt ((get-date)- (new-timespan -day 7))} | select FullName,LastWriteTime | ft
_
少し分解します:
gci
(別名_get-childitem
_)は、そのように聞こえ、提供されたファイルシステムパスをオブジェクトとして扱い、そこから子アイテム(ファイルまたはフォルダー)をプルします。
これは、引数として単一のフィルター関数を持つwhere
ステートメントにパイプされます。
フィルタ関数は「単純な」比較です。この場合、{A -gt B} = "AがBよりも大きい場合はTrue"です。この最初の部分は_$_.LastWriteTime
_で、パイプから渡された各オブジェクトを取得し、LastWriteTimeプロパティを引き出します。これの最後の部分は、相対的な日付構成です。 PSでは非常に単純なものはありません。日付の最初の部分は現在の日付を取得し、その数値から時間を減算します(この例では、7日の値を含む新しい日付オブジェクトを作成しているため、マイナス7日で日付が得られます。 7日前)。
where
フィルタリングを通過したオブジェクトから、FullNameプロパティとLastWriteTimeプロパティだけを取り出しています。これが、私たちが気にするすべてだからです。
最後に、それは_format-table
_(別名ft
)コマンドにパイプされるので、次のようなきれいなテーブルを作成します。
_FullName LastWriteTime
-------- -------------
C:\Reports\Task1\Report1 7/11/2011 10:00:00 AM
C:\Reports\Task2\Report1 7/10/2011 5:00:00 AM
C:\Reports\Task2\Report2 7/6/2011 9:00:00 PM
C:\Reports\Task4\Report7 7/4/2011 3:00:00 PM
_
すべてのカウントを取得するには、上記のコマンドを次のように囲みます。_(mess_from_above_less_the_ft_part).count
_( "| ft"の部分を削除する必要があります。そうしないと、4行のテーブル形式が追加され、カウントされてカウントが破棄されます。 4.4。