おはこんばんちわ。一昨日の話を今日にまで持ち越す荒業を見せた管理人・なぎです。
あらすじとして、一昨日突如不具合が発生し業務続行不可能となってしまった我らがなぎさん。
まだまだ勤務時間はたっぷり残ってるぞ、さぁどうするって具合で暇になってしまったので、
とりあえずまた性懲りも無くどうでもよさげなプログラムを作ってしまったよっていう話。
で、前回フォルダ内のiniファイル名全て書き出すプログラムを作ったと言っていましたが。
ぶっちゃけ、そのファイル名と申し訳程度の説明書きだけじゃまだ情報不足でして。甘かった。
そのiniがどこの設定ファイルかってのは分かっても何をいじってるのかが分からんでね。
そんなわけだから、フォルダ内の全ファイルの特定ワード検索プログラムを作ってみた(ぁ
簡単そうに言ってますが、実際の所結構頑張った。手間で言えば前回の3~4倍は超えるかと。
基本的仕様は大して変わらず。フォルダパス、拡張子、検索ワードを入力して検索かけて。
単語が含まれるファイル名を結果テキストに書き出して出力するというもの。基本的部分は。
それだけなら前回と作業量は大して変わらんのですよ。ちょっとテキスト読むの不安だったけど。
だってさ、1つの変数に100KB越えるようなテキスト量が入るのかなとか思っちゃったわけで。
できなかったら1行ずつ読んで検索かける案も用意してたけど、処理速度が落ちそうだったし。
結局できたんだけどね。何十、何百万語と言わず何兆語入ったんだろうと底知れぬ偉大さが。
あと、検索ワード1つってのもなんだかなってことで、半角スペース空けてAND検索機能も付け。
その辺のアルゴリズムは正直駅の日記システム作る時に色々考えてたので、基本は楽でした。
さらにもっとこだわってみようと、マイナス検索(単語頭に『-』付けるアレ)機能も付けていき。
ここまで来たらかなり本格的なプログラムになってきたと思えた。もう十分便利だろうこれw
で、色々テストしてみて。とりあえずiniとtxtが正常動作するってのは分かったので嬉しかった。
これで議事録(txt形式)で過去の事例探す時なんかもグッと楽になりそうだ。使えるぞこれ。
だが残念なことにWORD文書(docやdocx)に対応してなかった。これはちょっと残念だぞ、と。
なんとかしたかったけど、WORDいじるとなればVBSじゃなくてVBAの分野なんじゃねーのと。
諦めかけましたがちょっと待てよと。VBAでもできてるんなら同じVB、VBSでもできるんじゃと。
色々ググってみてそれらしい書き方見てもなかなか思うように行かず、かなり梃子摺りました。
そんで結構な苦闘の末、ようやくWORD文書にも対応。書き方違うんで拡張子次第で分岐。
WORD文書のテキスト部分を変数に格納って方法がどうしても分からなかったので、別案を。
まず最初にWORD文書をテキストファイルに変換して、そのテキストを見て検索をかけるという。
で、検索終わったらそのテキストファイルを廃棄すれば、擬似的に同じことができるわけで。
最初WORDを非表示起動して終了忘れてたので、テスト時に3~40個アプリ同時起動で焦った。
タスクマネージャ開いたらビッシリWORDのタスクが。ちょっとあれは怖いものありました。
そんなわけでtxt、ini、doc、docxに対応。大体の文書ファイルはこの辺だから大丈夫でしょう。
できれば更なる実用化向上のためhtmlやphpも対応できるかどうか見てみたいけどね(ぁ
ちなみに前回のもそうですが、共有ファイルにつっこんでるので全員閲覧可能。
気付いた人はラッキーって感じで使ってもらえれば幸いでしょうかね。使えたら。
あー、大体覚えたからソース書き直してWEB版として公開しても面白そうだね。
コメント