dポイントプレゼントキャンペーン実施中!

コマンドプロンプトで、
>dir
と打つと、ファイル名・フォルダ名が表示され、その後にディレクトリ内のファイル数とフォルダ数と空き容量が表示されると思います。

指定したフォルダ内にある、全てのフォルダ数(複数階層の場合は末端のフォルダまでの数)のみを取得したいのですが、そんなコマンドあるのでしょうか。

UNIXではあるようですが、WINDOWSで見つかりません。
どなたかご存知の方、教えて下さい。


GUI操作で言うと、特定のフォルダを右クリック、プロパティで表示される「フォルダ数」を取得したのです。

よろしくお願い致します。

A 回答 (3件)

#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の出力が既にディレクトリ一覧になっているので、ファイルに
リダイレクトしてテキストエディタの行数を見るでもよいと思います。
    • good
    • 4

#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
    • good
    • 0

dir /s



 で下位のフォルダとファイルをすべて表示します。最後に合計のファイル数とフォルダ数が表示されますのでこれで使えないでしょうか。

 dir /?で使い方を見ることができます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!