「test1.txt」
C:\Documents and Settings\01.jpg
C:\Documents and Settings\02.bmp
といった、パスのテキストを読み込み
「test1.txt」
C:\Documents and Settings\01.jpg
だけといったjpgのみのパスのテキストに書き換えをしたいのですが
どうしたらよいでしょうか?
右から読み込み.にあたったら拡張子で判別し行削除などと考えて
いるのですが参考意見等をお願いします。
申し訳ありません、重複投稿してしまいました
それは、VB6でですか?VB.NETでですか?
VB6の方法で統一もできますが、VB.NETとで
全く方法(労力)が違うのですが・・・
VB6でなら、こんなコードでしょう・・・
ただし、大量に.TXTファイルがあった場合、この方法では
保障できない場合があります。
※ こちらの環境に合わせて書きましたので、お使いの環境
にあわせて修正して下さい。コメントは入れました。
Private Sub Convert()
Dim szName As String
Dim szDir As String
Dim szTemp As String
Dim iIn As Integer
Dim iOut As Integer
Dim sz As String
Dim dt() As String
Dim i As Integer
Dim iU As Integer
' *.TXTファイルを検索するパス設定
' szDir = "C:\Documents and Settings\"
szDir = App.Path + IIf(Right$(App.Path, 1) <> "\", "\", "")
' *.TXTをサーチする
szName = Dir$(szDir + "*.txt")
While szName <> ""
' 読み込むファイルを開く
iIn = FreeFile
Open szDir + szName For Input As #iIn
' 書き出す一時ファイルを開く
szTemp = szDir + "Temp.tmp"
iOut = FreeFile
Open szTemp For Output As #iOut
While Not EOF(iIn)
' 読み込むファイルから1行づつ読み込む
Line Input #iIn, sz
' 区切り記号で、パスから切り出す
dt = Split(sz, "\")
' 要素数を取得する
iU = UBound(dt)
' パスとして要素があるか?
If iU > 0 Then
' .JPGと言う文字列を検索する
' ただし、大文字で比較させる
If InStr(UCase$(dt(iU)), ".JPG") > 0 Then
' あった!
For i = 0 To iU
' 一時ファイルに書き出す
Print #iOut, dt(i);
If i <> iU Then
Print #iOut, "\";
Else
Print #iOut,
End If
Next i
End If
End If
Wend
Close #iOut
Close #iIn
' 元ファイルを削除する
Kill szDir + szName
' 一時ファイルを、元ファイル名に置き換える
Name szTemp As szDir + szName
' まだ*.TXTファイルが無いか検索する
szName = Dir$
Wend
End Sub
以上。
参考意見、ありがとうございます。
VB6だったのですが、自分ではわからなかった部分を
参考にさせてもらいたいと思います。
ツイート | ![]() |