ファイの条件上書き

解決


ねねね  2003-12-02 23:05:19  No: 110380

「test1.txt」
C:\Documents and Settings\01.jpg
C:\Documents and Settings\02.bmp
といった、パスのテキストを読み込み

「test1.txt」
C:\Documents and Settings\01.jpg
だけといったjpgのみのパスのテキストに書き換えをしたいのですが
どうしたらよいでしょうか?

右から読み込み.にあたったら拡張子で判別し行削除などと考えて
いるのですが参考意見等をお願いします。


ねねね  2003-12-02 23:08:35  No: 110381

申し訳ありません、重複投稿してしまいました


岡田 之仁  2003-12-03 02:58:37  No: 110382

それは、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

以上。


ねねね  2003-12-04 23:45:38  No: 110383

参考意見、ありがとうございます。
VB6だったのですが、自分ではわからなかった部分を
参考にさせてもらいたいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加