• 締切済み

WinXP エクスプローラで検索させるVBS教えて

WindowsXPのエクスプローラで、検索コンパニオンを使って検索させるVBSの相談です。 ある文字列を含むファイルを検索させたいと思っていますが、検索対象のフォルダーが数十個ありますので、これをバッチ的に動かしたいと思っています。なお、会社で使いますのでフリーソフトはNGですがVBSはOKです。 WindowsXPでは検索した結果の保存はできないようですが、検索結果を取り出してファイル保存するVBSは探せました。 VBSで フォルダーを指定してエクスプローラを起動するところも出来そうです。 エクスプローラで現在開いているフォルダ配下から、ある文字列を含むファイルを検索させる部分をVBSで組みたいのでアドバイスをお願いします。できればコードで。それと、検索が終わったことを検知する部分も出来ればお教えいただきたいです。 ネットではかなり調べたつもりですが分かりませんでした。よろしくお願いします。

みんなの回答

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.1

シェアウエアの秀丸エディタを使っていますが、grepコマンドの実行で簡単にファイル名一覧、対応行の表示、置換等が出来ます。 複数ディレクトリ、下位ディレクトリのサーチ等の指定も可能です。 数十年来使っていますが、信頼度や高速性、大容量ファイルサポートなど十分以上です。 その他==>コマンド一覧==>検索系==>grepの実行   で辿れますが、キー割り当てをしておけばワンアクションでgrep機能を実行可能です。 フルバージョンがお試し用としてダウンロード使用可能です。 http://www.forest.impress.co.jp/library/software/hidemaru/ サポートフォーラムやユーザー作成のマクロ等も充実しています。 数百MBオーダーのファイルアクセス、サーチ、旧版とのファイル同士の比較などが簡単に出来ます。 http://www.maruo.co.jp/hidesoft/ http://hide.maruo.co.jp/lib/macro/index.html その他にはbutterfly_search.exe, grepreplace.exe 等も便利に使えると思われます。 フリーソフトですが、窓の杜のサイトのソフトは十分信頼して良いのではないでしょうか。 butterfly_search.exeはテキスト情報:単語等のインデックスを最初に作りますが、その後のサーチはすごく高速です。 http://www.d1.dion.ne.jp/~h_tomo/ http://www.forest.impress.co.jp/library/software/grprplc/

kootsuki4
質問者

お礼

ninoueさん さっそくありがとうございます。 秀丸エディタですか。 エクスプローラで文字列を検索すると、Excelのセルの中の文字、Excelに貼り付けたテキストボックスの中の文字、Word文書も検索してくれました。それでエクスプローラにしています。 秀丸エディタでも上記3種類は検索してくれるのでしょうかね?

kootsuki4
質問者

補足

自己レスですができました。 ポイントはいろいろ。 以下のコーディングを参考に。 ProcessID = Shell("explorer.exe " & SEARCH_FOLDER, vbNormalFocus) If ProcessID = 0 Then MsgBox "起動(explorer.exe)に失敗しました" EXPLORER_hWnd = FindWindow("CabinetWClass", WIN_title) RC = ShellExecute(EXPLORER_hWnd, "find", SEARCH_FOLDER, vbNullString, vbNullString, 0) Sleep 200 検索_hWnd = FindWindow("CabinetWClass", 検索結果_title) hWnd = FindWindowEx(検索_hWnd, 0, BaseBar_Class, vbNullString) hWnd = FindWindowEx(hWnd, 0, ReBarWindow32_Class, vbNullString) hWnd = FindWindowEx(hWnd, 0, SrchCompExplorerBar_Class, vbNullString) hWnd32770_1 = FindWindowEx(hWnd, 0, S32770_Class, vbNullString) Child_hWnd = GetWindow(hWnd32770_1, GW_CHILD) hWnd検索ボタン = 0 hWnd検索文字欄 = 0 Do WORKS = Space(200) J = GetWindowText(Child_hWnd, WORKS, Len(WORKS)) If J > 0 Then J = InStr(WORKS, Chr(0)) If J > 0 Then WORKS = Left(WORKS, J - 1) End If WORKS2 = Space(200) J = GetClassNameA(Child_hWnd, WORKS2, Len(WORKS2)) If J > 0 Then J = InStr(WORKS2, Chr(0)) If J > 0 Then WORKS2 = Left(WORKS2, J - 1) If WORKS2 = "Button" And WORKS = "検索(&R)" Then hWnd検索ボタン = Child_hWnd End If hWnd = GetWindow(Child_hWnd, GW_HWNDNEXT) If hWnd = 0 Then Exit Do Child_hWnd = hWnd Loop hWnd32770_2 = FindWindowEx(hWnd32770_1, 0, S32770_Class, vbNullString) Child_hWnd = GetWindow(hWnd32770_2, GW_CHILD) Terget_edit = False Do WORKS = Space(200) J = GetWindowText(Child_hWnd, WORKS, Len(WORKS)) If J > 0 Then J = InStr(WORKS, Chr(0)) If J > 0 Then WORKS = Left(WORKS, J - 1) End If WORKS2 = Space(200) J = GetClassNameA(Child_hWnd, WORKS2, Len(WORKS2)) If J > 0 Then J = InStr(WORKS2, Chr(0)) If J > 0 Then WORKS2 = Left(WORKS2, J - 1) If WORKS2 = "Edit" And Terget_edit = True Then hWnd検索文字欄 = Child_hWnd Terget_edit = False End If If WORKS2 = "SA_Button" And WORKS = "ファイルに含まれる単語または句(&W):" Then Terget_edit = True Else MsgBox "GetClassName エラー: hWnd= " & hWnd10 End If hWnd = GetWindow(Child_hWnd, GW_HWNDNEXT) If hWnd = 0 Then Exit Do Child_hWnd = hWnd Loop 検索文字列 = Sheets(検索指定シート名).Cells(1, "B").Value Sleep 200 RC = SendMessageAny(hWnd検索文字欄, WM_SETTEXT, 0, ByVal 検索文字列) Sleep 200 If RC <> 1 Then MsgBox ("SendMessageAny hWnd検索文字欄 が失敗しました RC=" & RC) Sleep 200 RC = SendMessage(hWnd検索ボタン, BM_CLICK, 0, 0) If RC <> 0 Then MsgBox ("SendMessage hWnd検索ボタン が失敗しました RC=" & RC) hWnd新しい検索 = 0 Do Sleep 10000 hWnd32770_3 = FindWindowEx(hWnd32770_1, 0, S32770_Class, vbNullString) Child_hWnd = GetWindow(hWnd32770_3, GW_CHILD) Do WORKS = Space(200) J = GetWindowText(Child_hWnd, WORKS, Len(WORKS)) If J > 0 Then J = InStr(WORKS, Chr(0)) If J > 0 Then WORKS = Left(WORKS, J - 1) End If WORKS2 = Space(200) J = GetClassNameA(Child_hWnd, WORKS2, Len(WORKS2)) If J > 0 Then J = InStr(WORKS2, Chr(0)) If J > 0 Then WORKS2 = Left(WORKS2, J - 1) Debug.Print "32770_3 hWnd= " & hWnd10 & " クラス名= " & WORKS2 & " タイトル= " & WORKS If WORKS2 = "SA_Button" And WORKS = "新しい検索を開始する(&N)" Then hWnd新しい検索 = Child_hWnd Else MsgBox "GetClassName エラー: hWnd= " & hWnd10 End If hWnd = GetWindow(Child_hWnd, GW_HWNDNEXT) If hWnd = 0 Then Exit Do Child_hWnd = hWnd Loop If hWnd新しい検索 > 0 Then Exit Do DoEvents Loop

関連するQ&A

  • vbs ファイル検索後、任意の場所にコピー

    vbsにて、以下のようなことを実現したいのですが、よくわからないので、ご教授願います。 ・実現したいこと インプットボックスに検索したいファイル名を張りつけて、検索対象ディレクトリ配下から、ファイルを任意の場所にコピーしたい。 コピー参照元は、3つ別々のディレクトリ配下の中から、一つ指定して、検索としたい。 対象ファイルが見つかったら、保存先をフォルダを指定できるダイアログを表示して、任意の場所にコピーしたい。 vbsでの作成方法がよくわからないので、ご教授いただければ助かります。宜しくお願いいたします。

  • ファイルの内容を検索を行うVBS

    エクセルのA列に検索ワードがそれぞれ1つずつ入っています。特定のフォルダ内にある全HTMLファイルの中身を検索し、各検索ワードが1つでも含まれていた場合、そのファイル名をエクセルのB列の対応する行に記入していくというVBSを作成する事は可能でしょうか? 例えば 検索フォルダ:C:\\aa ___ A ______ B _________ 1__あい__ h.html,g.html,s.html 2__うえ__ i.html 3__おか__ j.html,e.html 4__きく__ 該当なし 5__けこ__ :___:    : 上の2行目の例だと、「C:\\aa」フォルダの中にある全HTMLファイルのうち「うえ」という文字列が含まれているファイル名がi.HTMLということになります。 つまり、A列を読み込んでB列に自動記入していくVBSです。 VBS初心者なもので、どなたかお分かりになる方がいらっしゃいましたら是非教えて頂きたいです。よろしくお願いします。

  • エクスプローラでの検索

    エクスプローラでネットワーク上で、含まれる文字を条件にファイル検索を行うと、何度も自動で検索を行います。 具体的には・・・ 環境:WindowsXP Pro Ver5.1 SP2 手順:エクスプローラで上級者用のファイル検索サブウィンドウから検索を行う 条件:ファイル名のすべて・・・⇒指定しない(しても同じ)   :ファイルに含まれる単語・・・⇒"xx"等適宜   :探す場所⇒ネットワーク上のフォルダ適宜   :その他の条件には依存しません 動作:何度も「検索」ボタンを押した状態に勝手になり、ボタンの表題も「検索」となる。 ローカルフォルダで同じ事をしても、一度検索するのみです。 画面(サブウィンドウ)がちかちかして鬱陶しいので、これを止めたいです。 他のマシンではこうなっていなかった気がします。 (勝手に再検索をして、最新の結果を出していたような気はしますが、視覚的にちかちかはしていなかったです) 何か設定等で回避できるのでしょうか? どうぞよろしくご教示をお願いします。

  • Windows10のエクスプローラでのファイル検索

    Windows10のエクスプローラであるフォルダでファイル検索をしました。確実に存在するファイル(目の前に見えている)が検索結果として出てきません。ワイルドカードを使った検索で、*abc*.pdfというような検索です。該当ファイルなし、という結果です。試しにデスクトップにフォルダを作ってそのファイルを1つだけ保存し、そこで検索をかけてみると、さすがに検索されます。どのフォルダでも正常にファイルを検索できるように設定しなおす方法があるでしょうか。

  • テキストから文字列を検索して分岐処理

    WindowsXP(SP2)環境で、複数のテキストファイル内にある文字列から自端末名を検索し、その結果(どのテキストファイル内にあったか)で処理を分岐するツールを作成したいのですが、何かいい方法はありますでしょうか。 テキスト内は下記のような作りにしようと思っています。 バッチファイルかvbsが理想です。 aaa bbb ccc ・ ・ ・

  • バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。

    バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。 あるフォルダにvbsファイルとそれを実行するためのバッチファイル、vbsで読み込むリストファイルを置いています。 これを現在ログインしているのとは別のユーザで実行したいのですが、ファイルの記述をすべてフルパス指定しなければ動きませんでした。 しかし、フォルダが変わるたびにすべてのパスを書き換えるのが大変なため、以下のように修正を加えたいと思っています。 (1)バッチファイルでvbsを実行する際、カレントディレクトリ情報を取得し、パスを確定。(CDコマンド) (2)vbsファイル実行 (3)(1)のCDコマンドで読み込んだ情報をvbsに引き渡し、リスト読み込み。 バッチファイルからvbsに引き渡す部分、vbsがバッチファイルから受け取る部分の記述が分かりません。 一例を教えていただけないでしょうか?

  • Windows 2Kの Windows Explorerと同じ検索機能を持つフリーウェア

    Windows2KのWindows Explorerのファイル中文字検索で探せたのに、WindowsXPのWindows Explorerでは探せないものがあります。 (拡張子がいわゆるテキストを想定していないファイル中の文字検索) Windows2KのWindows Explorerのファイル中文字検索と同じ機能を持つ(同じ結果を示す)、フリーウェアでおススメはありますか? よろしくお願いします。

  • OSでのファイル検索について

    みなさん、はじめまして。 今、メールマガジン等の文字主体のファイルを整理しております。 後からWindowsの「検索-ファイルやフォルダ」で検索を かけて必要な情報を抜き出そうと考えておりました。 整理方法としては、関連のある文字情報を一つのファイルの中にコピー&ペーストして 保存し、それに関したファイル名で保存しております。 ここまでは順調だったのですが・・・ 試しに「検索-ファイルやフォルダ」で、 「含まれる文字列」の項目にファイルの中身にある文字列を入力し、 検索してみると、思った結果が出ないのです。 例えば・・・ ファイル名「コンピュータ用語」 ファイルの中身にある単語「Access」 ファイルの形式「.doc」 含まれる文字列「Access」 検索結果・・・見つかりません という感じになってしまうということです。 明らかにファイル内では使われていることはわかっているのですが、 それが検索結果に表示されないというのは、 なんとももどかしく・・・(^_^;) 検索の使い方はあっていると思うのですが、 このような際に原因として考えられることは何かないでしょうか? どうかご助言お願いいたします。m(__)m

  • explorerの検索不良の処置

    windows xpについているexplorerで検索をかけようとすると次のようなメッセージがでて検索が行えません. メッセージ  検索コンパニオンの必要なファイルが見つかりません.セットアップを実行する必要があります. 1.検索コンパニオンに必要なファイルはどのようにしてセットアップするのでしょうか. 2."セットアップを実行する"というのは,どのような意味でしょうか.wondowsxpの再インストールのことでしょうか. 3.何か大がかりにならずに修復する方法はないのでしょうか.

  • ディレクトリおよびファイルを作成する方法について(MS-DOSバッチ、vbs等)

    Windows Server 2003 についての質問です。 もしご存知でしたら、ヒントだけでもご教示願えますでしょうか。 目的  ・あるツールの評価をするため、多数のディレクトリ   とファイルを作成する必要があります。   これを手動で実行することは時間的に無理があるため、   MS-DOSによるバッチやvbs等スクリプトによる自動化を   したいと思っております。 やりたいこと  ・例えば、下記のような階層構造でフォルダおよびファイルを   作成するバッチを作成したいです。   c:\フォルダ1\フォルダ2\フォルダ3\フォルダ4\フォルダ5\フォルダ6 各階層のフォルダ配下にもサブフォルダとファイルを多数存在させます。   ファイルサイズは固定です。   フォルダ、ファイルの名前は単純なもので構いませんが、   番号を振りたいです。   方法としては、まずは元になるファイルを作成しておき、   あとはforコマンドでディレクトリを作成してファイルを   コピーしていけば良いと思っておりますが、実際に   どのようにMS-DOSバッチ化(もしくはvbsスクリプト化)   すれば良いか不明です。 お手数ですが、どうぞご教示のほど宜しくお願い致します。

専門家に質問してみよう