- 締切済み
ディレクトリ数のみを取得するコマンド
コマンドプロンプトで、 >dir と打つと、ファイル名・フォルダ名が表示され、その後にディレクトリ内のファイル数とフォルダ数と空き容量が表示されると思います。 指定したフォルダ内にある、全てのフォルダ数(複数階層の場合は末端のフォルダまでの数)のみを取得したいのですが、そんなコマンドあるのでしょうか。 UNIXではあるようですが、WINDOWSで見つかりません。 どなたかご存知の方、教えて下さい。 GUI操作で言うと、特定のフォルダを右クリック、プロパティで表示される「フォルダ数」を取得したのです。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tadare
- ベストアンサー率61% (53/86)
#1の方の回答ににてますが、dirのオプションをすこし変更して dir /AD /S /B /AD・・検索対象をディレクトリに限定する。 /S ・・階層を再帰的に検索する。 /B ・・ファイル名(ここではディレクトリ名)を一覧化する。 /ADをつける事で、途中の表示からファイルが除外されますから若干終了までの時間が短縮します。 /Bをつける事で、「.」「..」が排除されます。 これで、階層を再帰的にみたディレクトリだけの一覧ができるのでそれをgawkで行数カウントします。 gawk -- "{count++} END{print count}" 結局、 dir /AD /S /B | gawk -- "{count++} END{print count}" というコマンドラインですみます。 gawkとかご存じない場合は、wcとかの行カウント系のコマンドにリダイレクトすればいいでしょう。 その辺りも不得手とおっしゃるなら、dirの出力が既にディレクトリ一覧になっているので、ファイルに リダイレクトしてテキストエディタの行数を見るでもよいと思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1様の方法では、空フォルダでも2ディレクトリと計数(. .. が数えられる)され、使えません。 ちょうど良いコマンドがあったかどうかはわからないのですが、 VBScript を使うと以下のような感じ ---------------------------------------------------------------- '指定したフォルダのサブフォルダを含めたフォルダ件数を表示する 'cscript //nologo FolderCount.vbs FOLDER 'または、フォルダのドロップ Dim fso, wsho, folderList, folder Dim i, count Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set wsho = WScript.CreateObject("WScript.Shell") Set folderList =WScript.Arguments count=0 for i=0 to folderList.length-1 Set folder = fso.GetFolder(folderList(i)) count = count + auxProc(folder.Path) next WScript.Echo("フォルダ数:" & count ) function auxProc(folderPath) Dim folder, x, folderName, count Set folder = fso.GetFolder(folderPath) count = folder.SubFolders.Count For Each x in folder.SubFolders count = count + auxProc(x.Path) next auxProc = count End function
- norakini
- ベストアンサー率34% (238/696)
dir /s で下位のフォルダとファイルをすべて表示します。最後に合計のファイル数とフォルダ数が表示されますのでこれで使えないでしょうか。 dir /?で使い方を見ることができます。