【バッチファイルの使い方(3)】フォルダにある「エクセルファイル」の名前を一気にエクセルでリスト表示する-ワイルドカードを使ってみよう-

【バッチファイルの使い方(3)】フォルダにある「エクセルファイル」の名前を一気にエクセルでリスト表示する-ワイルドカードを使ってみよう-

こんにちは。会計士KOです。

今回は、フォルダにある「エクセル」ファイルの名前を一気にエクセルでリスト表示する方法を紹介します。

例によって今日も書くコードはたったの1行です。

また、使うだけであれば特に前提知識はいらないのですが、そもそもバッチファイルとはなにか、バッチファイルの作り方、CUIとGUIの違い等は初回の記事にまとめてあるので、是非確認をしてみてください。

【バッチファイルの使い方(1)】フォルダにあるファイルの名前を一気にエクセルでリスト表示する

 

「今回作るもの」

今回はバッチファイルを使って、フォルダにある「エクセル」ファイルだけを抽出し、一気にエクセルでリスト表示します。

何を言ってるんだ・・・?という人は以下のgifを確認してみてください。

 

フォルダにはサブフォルダや、画像であるpngファイル等、たくさんのファイルがありますが、その中にはエクセルファイルがあります。

また、エクセルファイルの中でもバージョンの違う「.xls」と「.xlsx」ファイルがあります。

しかしながら、今回作っていくバッチファイルを使えば、そのようなエクセルファイルの種類に限らず、一気にリストを作成することが出来ます!

たまに飛んでもないファイル数のフォルダなどを見かけ、ファイル名だけでもエクセルでリスト化して管理したい、ソートしたい、、、というときがあります。

そんなときに使えるバッチファイルです。

もちろん、pngファイルだけを抽出したいなどの方法にも対応が出来るので、是非見てみてください。

実際に作成してみる(1)リストを作るバッチファイル

リストを作るバッチファイル

こちらは初回の記事と何も変わりません。リストを作成したいフォルダで、

dir /b > failename.csv

とメモ帳に打ち込み、.bat形式で保存をしてください。

そして歯車の付いたバッチファイルをダブルクリックすれば、完成です。

コードの意味

こちらで使った命令文の意味は以下の通りです。

コード 意味 内容
dir 命令文 「ディレクトリ名」+「ディレクトリにあるサブディレクトリとファイル名」を取得する
/b オプション 「ディレクトリ名」+「名」ではなく、「ディレクトリ名を除いた名」だけを取得する
> 〇〇 命令文 取得したデータを〇〇(CSVやテキスト)に出力します。

実際に作成してみる(2)「エクセル」ファイルだけのリストを作るバッチファイル

エクセルファイルだけのリストを作るバッチファイル

では、今回の本題のファイルを作っていきましょう。

とはいっても、かなり簡単です。先ほどのバッチファイルについて、

dir /b > failename.csv

ではなく、5文字を加えて、

dir /b *xls* > filename.csv

とするだけです。

えっ、これだけなの・・・?となるかもしれませんが、これだけです。

これを実行すると、以下の通り、雑多なフォルダの中からエクセルファイルだけを抽出して、リスト化が出来ます。実際できてますよね。

dir命令文に指定できるもの

dir命令文では、dirコマンドの後に文字列を与えるとその文字列にヒットしたものだけを引っ張ってきてくれます。

例えば、先ほどのフォルダには「batfile1.png」というpngファイルがたくさんありました。

このため、

dir /b batfile1.png > filename.csv

とすると、以下のようにbatfile1.pngと名前の付いたファイルのみを引っ張ってきてくれます。

 

 

この点、dir命令文に渡すファイル名は完全一致しているファイル名となっていなければならず、あいまいな検索は出来ません。

このような不便な点を補完するのがワイルドカードです。

ワイルドカードとは

今回付け足した、

「*xls*」

は何をしているのでしょうか。もちろん、上記で説明したようにdirコマンドにファイル名を引き渡しているのですが、「*」が付いてて良くわからないですね。

「*」は実は、ワイルドカードといいます。もしかするとエクセルの関数などで使ったことのあるひとはいるのではないでしょうか?

Wikipedia先生に聞いてみると、

コンピュータなどの関連において、ワイルドカードは、検索などグロブの際に指定するパターンに使用する特殊文字の種類で、どんな対象文字、ないし文字列にもマッチするもののことである。カードゲームワイルドカードに由来する呼称。

UNIXシェルでは、「?」(疑問符)を任意の一文字、「*」(アスタリスク)を長さ0文字以上の任意の文字列にマッチするパターンとして、コマンドライン上で、存在するファイルの名前に対して展開される。

Wikipediaより引用

となっています。

つまり、「*」は任意の文字(0文字でも可能)を示します。

このため、

「*xls*」

「「任意の文字(0文字でも可)」+「xls」+「任意の文字(0文字でも可)」」

という意味となり、xlsだけでも、xls+xが入ったxlsxでもヒットするようになります。

以上のように、ワイルドカードを使えばdirコマンドに与えるファイル名を完全なものではなく、あいまいなものでもヒットするように実行可能にしてくれるのです。

コードの意味

コード 意味 内容
* ワイルドカード 任意の文字を示す。dirコマンドと併せて、特定の文字を持ったファイルのみを取得することが可能。

まとめ

今回も簡単な1文で、簡単にリストを作成することが出来ました。

*xls*を*pngに変更すればpngと最後についたファイル=つまりpngファイルのみをヒットさせ、リスト化させることが出来ます。

是非、色々と試してみてください。