2

人々がデータを転送するために使用する領域から古いファイルとディレクトリを削除するスクリプトが毎日実行されています。1つの小さなセクションを除いて、すべてがうまく機能します。7日以上経過していて空のフォルダを削除したいのですが。thumbs.dbファイルがあるため、スクリプトは常にフォルダー内に1つのファイルを表示します。1つのファイルがthumb.dbであるかどうかを確認できると思います。その場合は、フォルダーを削除するだけですが、もっと良い方法があると確信しています。

 
$location = Get-ChildItem \\dropzone -exclude thumbs.db
foreach ($item in $location) {

  other stuff here going deeper into the tree...

  if(($item.GetFiles().Count -eq 0) -and ($item.GetDirectories().Count -eq 0)) {

    This is where I delete the folder but because the folder always has
     the Thumbs.db system file we never get here

  } 

}


4

3 に答える 3

3
$NumberOfFiles = (gci -Force $dir | ?{$_ -notmatch "thumbs.db"}).count
于 2012-06-13T19:55:10.143 に答える
1

このメソッドを使用して単純なテキスト ファイルの形式で除外リストを提供し、特定のファイルまたは拡張子をカウントから除外します。

$dir = 'C:\YourDirectory'
#Type one filename.ext or *.ext per line in this txt file
$exclude = Get-Content "C:\Somefolder\exclude.txt"
$count = (dir $dir -Exclude $exclude).count
$count
于 2012-09-24T20:48:53.050 に答える
1

ディレクトリ内のすべてのファイル/アイテムが db で終わるものを除いてカウントされる get-childitem -exclude オプションを試すことができます。

$location = get-childitem -exclude *.db

除外するファイルを指定した場合にも機能します。この場合は、thumbs.db です。

$location = get-childitem -exclude thumb.db

これがうまくいくかどうか教えてください。


あ、私も今気づいたのですが、

$location = get-childitem -exclude *.db

場所のディレクトリ内の .db アイテムのみを処理します。ツリーをさらに深く掘り下げている場合 (たとえば、GetFiles() および GetDirectories() メソッドから)、thumb.db が見つかる場合があります。したがって、thumbs.db を無視するには、これらのメソッドに除外オプションを追加する必要があります。

したがって、たとえば $item.getFiles() メソッドで get-childitem を使用する場合は、-exclude オプションも指定する必要があります。

申し訳ありませんが、あなたの質問をもっとよく読むべきでした。

于 2012-06-13T19:24:48.717 に答える