dポイントプレゼントキャンペーン実施中!

VB2010で拡張子なしのファイル複数個から
検索した文字列が含まれているファイルを見つけだしたいのですが
どのように作るのがベストでしょうか?
できれば拡張子にtxtをつけて開くような変換は行わずにしたいです。

A 回答 (6件)

検索がテキストベースのファイルならVBにしなくても


エクスプローラでもバッチファイルでもできる。
以下バッチファイル参照。(必要な主な部分を抜粋)

SET CH=%1
:TOP
IF "%2" == "" GOTO EXT
FOR %%F IN ( %2 ) DO C:\WINDOWS\COMMAND\FIND.EXE /N /I "%CH%" %%F >> C:\SEARCH.LST
SHIFT
GOTO TOP
:ERR
GOTO END
:EXT
:END


ファイル名をFI.BATとしたバッチファイル。
「FI 検索文字列 検索ファイル・・・」

【使用例】
FI.BAT WIN C:\TEMP C:\WK D:\SOURCE\*.BAS

【機能】
"WIN"文字列を
"C:\TEMP"
"C:\WK"
"D:\SOURCE\*.BAS"
3つのフォルダ内で検索し見つかったら
テキストファイルへ書きだす。
指定フォルダはいくつでも可能。
    • good
    • 1

コンソールアプリケーションを選んで


Module Module1
Sub Main()
Dim p As Double
Dim strt
' Read the information into a single string
Dim objReader As New System.IO.StreamReader("C:\Documents and Settings\XXXX\My Documents\aaa6.txt")
Dim fileString As String = objReader.ReadToEnd()
MsgBox(fileString)
strt = 1
Do
p = InStr(strt, fileString, ",")
MsgBox(p)
strt = p + 1
Loop While p <> 0
objReader.Close()
objReader.Dispose()
End Sub
End Module
をやってみると,旨くカンマの位置を示してくれるようだ。
上記のキモはReadToEndを使って、レコードごと(細切れ)の捕捉を避けていること。
ファイル名をその都度変えて、繰り返せば、10個程度のファイルなら使えるのではないか。
「ただ拡張子なしのファイル」で旨くいくかどうか判らないが、そのフォルダの中でユニークな名前なのだろうから、
また内容は文字列ならうまく行くのではないか。
また1ファイル全体で入力バッファーの制限長を越えたファイルでなければ良いが。
    • good
    • 0

vb2010環境ではないので使えるか確認はしていませんが。



Dim fileName As String
For Each fileName In System.IO.Directory.GetFiles(フォルダ名)
If Microsoft.VisualBasic.InStrRev(fileName,".") = 0 Then
処理
End If
Next

InstrRevが使えなければ、fileName.LastIndexOf(".")
If fileName.LastIndexOf(".") = 0 Then
    • good
    • 0

手で選択でなく、ファイルを特定するところからプログラム、自動化したいならフォルダ決めはどうするか。

ソース埋め込みでもINIファイルでもダイアログでもよい。

ダイアログでもファイルが移動してもプログラム修正しなくてよい。それはそれでメリットあります。

ファイル一覧のテキストファイルをVBから作成し、拡張子あれば何もしない、拡張子なければ検索ロジックを実行でもよい。

検索して見つかったらそのファイル一覧にバイト位置追記でも良い。
1ファイルに複数あっても追記すれば良い。

何がベストか?と言われても何に対して、がわからない。個人差あります。
質問の背景わからず。今どんな感じだから改善したい、のならわかる。

また、やり方いろいろを提示したら終わりか作って欲しいレベルか不明。具体的要件まで提示しないと逆質問になりすぐには作れませんがー。
    • good
    • 0

ファイルパスとファイル名が格納してあるテキストファイルがあれば、それ1行読み込みオープン、終わると次のファイルを読み込む、の繰り返し。



ファイルは決まっているか?。


やり方はいろいろある。

この回答への補足

ファイルは決まっています。1つのディレクトリ内の拡張子なしのファイルです。

補足日時:2011/02/23 13:40
    • good
    • 0

確認。



見つかればよいだけなら、エクスプローラほか既存ソフトで出来そうだが、プログラムということか。

見つかるとどうしたい?。あるなしだけかバイト位置も知りたいか。ファイルはあるフォルダ1つにあるか。等不明。


ファイルについては複数ファイル選択可能なダイアログを使う。使い方事例多数。

その1ファイルについて検索する。終わると次のファイル。

読み込むにはバッファ使うか1行ずつか1バイトずつか。


どこに悩んでいますか。

この回答への補足

出来ればバイト位置がわかれば良いです。
ファイル格納ディレクトリは一定なのでその中から見つけだせれば
良いのですがダイアログを使うというのは手動でファイルを選択する
ということでしょうか?

補足日時:2011/02/23 13:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!