前回は、Linuxでファイル名に今日の日付を含むファイルをカウントする方法をご紹介しましたが、今回は全く同じことをWindowsで行ってみたいと思います。
今日の日付入りファイルをカウント
Windowsも同様に3種類のコマンドが必要です。
ただ、同じLinux系ではありますが、使用するコマンドと書き方が全く異なります。
- ファイル一覧を取得
- 日付でファイルを絞り込む
- 結果をカウントする
Linuxのコマンドと比較しながら説明していきます。
ファイル一覧を取得
Linuxでは「ls」コマンドをすぐに思い浮かべると思いますが、Windowsではあまり馴染みのない「where」コマンドを使用します。
使い方は以下の通りです。
1 |
> where /r [特定のフォルダ] [ファイル名] |
例えば、Cドライブ直下の「logs」というフォルダに、「messages_YYYYMMDD.log」という名前のファイルがあるとしたら…
1 2 |
> where /r C:\logs messages_YYYYMMDD.log C:\Temp\messages_YYYYMMDD.log |
このように、フルパスで結果が返ってきます。
日付で絞り込む
次に、ファイル名の日付の部分を今日の日付にしたい場合、Windowsでも予め用意されている便利な「%date%」変数を使えば良いのですが、そのまま出力してみると、
1 2 |
> echo %date% 2021/12/23 |
このように「/(スラッシュ)」が邪魔してしまいます。
そこで少し手を加えて、日付のフォーマットを「YYYYMMDD」形式に変換してあげましょう。
1 2 |
> echo %date:/=% 20211223 |
これと先程のコマンドと合わせると、今日の日付のファイル名を検索することができます!
1 |
> where /r C:\logs messages_%date:/=%.log |
結果をカウントする
最後に、上記で絞り込んだファイル一覧に「|(パイプ)」でカウントするコマンドを繋ぐだけですが、Windowsでのカウントが1番理解に苦しみましたね。。
と言うのも、カウント系のコマンドが用意されてるのかと思ったら、なんと「find」コマンドにオプションを付けてカウントするようです。
実際のコマンドはこちら!
1 |
> find /c /v "" |
findコマンドのオプションについては、こちらをご参照ください。
そして、完成したコマンドがこちらです。
1 |
> where /r C:\logs messages_%date:/=%.log | find /c /v "" |
こちらも何かと便利に使えるので、ぜひお試しあれ!
コメント