(2つ以上のファイルではなく)1つのファイルを含むすべてのWindowsフォルダーを検索しますか?


2

奇妙なパラメーターの一種ですが、単一のファイルを含むフォルダーのみを返す検索を実行できると便利です。2つ以上のファイルがあるフォルダーは返されません。これはWindowsで実行できますか?また、ファイル自体を返す検索を使用することもできます。

回答:


3

これを行う1つの方法は、組み込みのWindowsスクリプトを使用することです。

1つのフォルダーに2つのプレーンテキストファイルを作成する必要があります。

search.vbs 内容(基本的にコードサンプルから取得、私によってわずかに変更):

strDir = "i:\"
ignoreFolderCount = false

'*********************

set FSO = createobject("Scripting.FileSystemObject")

Set objDir = FSO.GetFolder(strDir)
getInfo objDir, ignoreFolderCount


'**********************
Sub getInfo(pCurrentDir, ignoreFolderCount)

   For Each aItem In pCurrentDir.SubFolders
      getInfo aItem, ignoreFolderCount
   Next

   if pCurrentDir.Files.Count <= 1 then
      if pCurrentDir.Subfolders.Count = 0 or ignoreFolderCount then 
         wscript.echo pCurrentDir
      end if
   end if
End Sub

search_launch.bat 内容あり:

echo off
echo "Running process..."
cscript.exe search.vbs > search_results.txt
echo "Process complete"
pause

検索スクリプトの最初の2行は、フォルダーパス(それに合わせて変更)、およびサブフォルダーもある1つのファイルを持つフォルダーを無視する決定を取ります。残りはフォルダーを再帰的に検索し、ファイル数をチェックします。

search_launchバッチファイルは、コンソール(windows guiではなく)を使用してスクリプトを起動し、出力(フォルダーパス)をという名前のテキストファイルにリダイレクトしますsearch_results.txt。これは空になるか、条件に一致するフォルダーの名前を持ちます。

に対して使用すると「アクセス拒否エラー」が表示されますc:\(おそらく、管理者としてバッチファイルを実行する必要があります)。これはおそらく隠しファイルを検出しません。


乾杯。それはうまくいきました。マッピングされたネットワークドライブで作業し、0個のファイルを含むフォルダーも返しました(これは私の場合は役に立ちましたので、苦情はありません)。どうもありがとう。他の誰かがこれを使用する場合は、100万のダイアログボックスをOKにしない限り、.vbsファイルではなく.batを実行してください。
CreeDorofl

GGええ、そうでなければ、echoステートメントはモーダルダイアログを表示するため、バッチファイルを実行することを明示的に言及するのを忘れていたと思います。
horatio

batachを実行しても機能しませんでした(windows7)。「search_results.txtecho」というファイルが作成されますが、「offecho "Running process ..." cscript.exe search.vbs」のみが含まれています。しかし、.vbsの実行は機能しました(通過するフォルダーがあまりなかったため、多数のモーダルダイアログを表示しても問題ありません
でした
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.