掲題の通り。コマンドプロンプトの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>