管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

dirコマンドで表示される"."や".."を除いて表示したい(Windows)

掲題の通り。コマンドプロンプトのdirコマンドで表示される"."、".."を除きたかったのであれこれやってみた。
何もしないとき↓

D:\Desktop\20170414>dir
 ドライブ D のボリューム ラベルは ボリューム です
 ボリューム シリアル番号は ****-**** です

 D:\Desktop\20170414 のディレクトリ

2017/04/14  22:04    <DIR>          .
2017/04/14  22:04    <DIR>          ..
2017/04/14  22:18               142 ばっち.bat
2017/04/14  22:03                 0 ふぁいる1.txt
2017/04/14  22:03                 0 ふぁいる2.txt
2017/04/14  22:03    <DIR>          ふぉるだー
               3 個のファイル                 142 バイト
               3 個のディレクトリ  59,821,461,504 バイトの空き領域

D:\Desktop\20170414>

".",".."を除いて表示↓

dir | findstr /v /r "\.\.*$"

/v マッチしない行を表示
/r 検索文字列を正規表現として指定
"\.\.*$" 「.(.)で終わる」という正規表現

上記コマンドの実行結果↓

D:\Desktop\20170414>dir | findstr /v /r "\.\.*$"
 ドライブ D のボリューム ラベルは ボリューム です
 ボリューム シリアル番号は ****-**** です

 D:\Desktop\20170414 のディレクトリ

2017/04/14  22:18               142 ばっち.bat
2017/04/14  22:03                 0 ふぁいる1.txt
2017/04/14  22:03                 0 ふぁいる2.txt
2017/04/14  22:03    <DIR>          ふぉるだー
               3 個のファイル                 142 バイト
               3 個のディレクトリ  59,821,461,504 バイトの空き領域

D:\Desktop\20170414>

「3個のディレクトリ」ということで、".",".."もカウントされちゃっていますがね...

応用編ということで、ディレクトリの数を数える↓

@ECHO OFF

REM ".",".."を除いたdirコマンドの結果のうち、<DIR>の行数をカウントして表示する
REM バッククオートの中でパイプを使用する際は"^"でエスケープする!
for /f "usebackq tokens=* delims=," %%i in (`dir ^| findstr /v /r \.\.*$ ^| find /C "<DIR>"`) do (
echo %%i
)

PAUSE

上記コマンドの実行結果(ディレクトリ構成は上述の通り)↓

D:\Desktop\20170414>ばっち.bat
1
続行するには何かキーを押してください . . .

D:\Desktop\20170414>