最近ちょっと欲しくなって作ってみたのですが、手軽な割に意外と便利に使えるので紹介します。
このツールはCSVやTSVなどのデータを検索するための汎用ロジックです。
まず、以下の社員に関するデータがあったとします。
社員番号 | 名前 | 所属 |
---|---|---|
1 | 石田一郎 | 社長室 |
300 | 仁藤次郎 | 総務部 |
306 | 佐藤三郎 | 営業部 |
601 | 吉田四郎 | 営業部 |
100 | 後藤五郎 | 営業部 |
1024 | 武藤六郎 | 製品開発部 |
2048 | 七海奈々枝 | 品質検査部 |
4096 | 蜂須八郎 | 製品開発部 |
889 | 九頭九介 | 在庫管理部 |
1111 | 天草十郎 | 海外支店 |
まずはこれをCSVファイルにしましょう。
社員番号,名前,所属
1,石田一郎,社長室
300,仁藤次郎,総務部
306,佐藤三郎,営業部
601,吉田四郎,営業部
100,後藤五郎,営業部
1024,武藤六郎,製品開発部
2048,七海奈々枝,品質検査部
4096,蜂須八郎,製品開発部
889,九頭九介,在庫管理部
1111,天草十郎,海外支店
そして「社員データ.csv」として保存します。
次に以下のようなバッチファイルを作成します。
@ECHO OFF SET EMPCODE=一郎 SET WRKDATA=wrkempcode.dat SET USERDATA="%~dp0社員データ.csv" :INPUTDATA ECHO ------------------------------------------ ECHO ? 検索する社員情報を入力してください ECHO [終了する場合はqを入れてください] ECHO ------------------------------------------ SET /PEMPCODE=[初期値:%EMPCODE%]> IF /I %EMPCODE%==q GOTO FINISH TYPE %USERDATA% | FIND /I "%EMPCODE%" > %WRKDATA% IF %ERRORLEVEL%.==1. ( ECHO 該当する社員はいません ECHO [何かキーを押してください] GOTO DISPOSE ) CLS ECHO ------------------------------------------------------------ FOR /F "tokens=1,2,3* delims=," %%i IN (%WRKDATA%) do ( ECHO 社員番号 : %%i ECHO 氏名 : %%j ECHO 部門 : %%k ECHO. ) ECHO ------------------------------------------------------------ ECHO. ECHO [何かキーを押してください] :DISPOSE PAUSE > NUL CLS GOTO INPUTDATA :FINISH
作ったら、バッチファイルの名前は「社員検索.cmd」として保存しましょう。
そして「社員検索.cmd」と「社員データ.csv」を同じフォルダに配置したら準備は完了です。さっそく「社員検索.cmd」をダブルクリックして実行してみます。
まずは社員に関する情報を入力するよう促す画面が出てきます。
それでは佐藤さんを探してみましょう。
佐藤と入れて、Enterを押してください。
佐藤さんが見つかりました。
次に川口さんを探してみましょう。
さっきと同じく川口と入れてEnterを押してください。
見つらなかった旨、そのメッセージが表示されます。
ちなみに、検索情報を入れるところで半角の「q」を入れてEnterを押すと処理は終了します。
このバッチファイルの肝は、
-
- TYPEとFINDを使ったテキストファイルから特定の箇所を抜き出す手法
- for文を使ったテキストファイルの解析
です。これを応用すればさまざまなデリミタのテキストファイルを解析することが出来ます。ぜひ試してみてください。
また、自分で書くのが面倒だという人用に、今回使用したファイルはこちらに「テスト用ファイル.zip」という名前でアップロードしておくのでダウンロードして試してみてください。
[追記]
ちなみに名前でばかり検索していましたが、実際には所属や社員番号での検索も可能です。
試してみてください。