C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法


(過去ログ 11 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■2582 / inTopicNo.1)  【VB6】フォルダ内全てのファイルの特定文字列を置換方法
  
□投稿者/ ろん (1回)-(2007/04/12(Thu) 14:26:55)

分類:[VB6 以前] 

こんにちは、ろんと申します。
初めて利用させて頂く初心者です。
OS/WinXPでVB6についての質問です。

【行いたい事】
1.ファイル構成と致しまして、特定のフォルダの下にいくつかのサブフォルダがあり
 その中に"*.txt","*.html",画像ファイル等が複数存在しています。

2.全てのサブフォルダに対して"*.txt"と"*.html"を検索し
 該当するファイルの中の特定な文字列を、違う文字列に置き換える。

3.処理の内容をログに書き出す。

このような処理を行いたいと考えています。

【わからない事】
1. プロジェクト→参照設定で、Microsoft Scripting Runtime を有効にして
  FileExists を利用すれば出来そうというのはわかったのですが
  ファイルがなくなるまでのループを含め、利用方法がわかりません。

2. HTML ファイルをテキストベースで置き換える方法がわかりません。

3. ログに書き出すとき(WRITE する時)に置き換えた箇所(何行目)を
  書きたいのですが、特定文字列の場所(行数)を検索する方法がわかりません。

お知恵のある方のお力をお貸し頂けましたら幸いです。
サンプル等がございましたら、参考にさせて頂きたいと思っています。

よろしくお願い致します。
以上です。

引用返信 編集キー/
■2584 / inTopicNo.2)  Re[1]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ Blue (296回)-(2007/04/12(Thu) 14:34:38)
1.
FileSystemObjectを使うのであれば、

GetFolder メソッドより該当ディレクトリのオブジェクト(Folder オブジェクト)を取得して、
Files プロパティをすべて列挙(For Each)し,Like演算しか何かで、該当ファイルかチェックしてゆけば
いいのではないでしょうか。

また、FileSystemObjectを使わずとも Dir関数を使えばファイルの列挙は可能なので同様のことはできると思います。
(詳しくはDir関数のヘルプを読んで下さい。)


2.
HTMLって単なるテキストファイルだと思うのですけど。
ただ、書き換える文字にもよりそうです。(タグをあらわす文字の場合どうなってほしいのか等。)


3.
置換するときに1行1行読み込んでいくのでそのときにカウントするのが普通でしょう。
引用返信 編集キー/
■2595 / inTopicNo.3)  Re[2]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ ろん (3回)-(2007/04/12(Thu) 15:27:37)
No2584 (Blue さん) に返信

Blue様
回答ありがとうございます。

FileSystemObject の使い方等、参考にさせて頂き
ファイルを検索するところまで出来てきました。

ファイルは、"*.txt"等ワイルドカードを使うのではなく
LIKE 等で比較のループで引っ張るのですね。
参考にさせて頂きます。

固定観念で、HTML は、IEで開いてしまうのだろうかっと
考えておりました、やってみます。

文字列もサーチして置き換えるのではなく、
一行毎に読み込んで回すという考えで
作っていきます。
ありがとうございました。

    Open Out_Log For Output As #1
    Set Fol = FSO.GetFolder(Out_Dir)
    For Each MyFol In Fol.SubFolders
        Out_SubDir = Out_Dir & MyFol.Name
        Write #1,
        Write #1, Now(), "Folder = " & Out_SubDir
        For Each MyFile In MyFol.Files
            Out_File = Out_SubDir & "\" & MyFile.Name
            Write #1, Now(), "File = " & OutFile
        Next
    Next

以上です。

引用返信 編集キー/
■2643 / inTopicNo.4)  Re[3]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ Jitta (298回)-(2007/04/12(Thu) 20:57:46)
ダメ

エンコード考えてないよ。
また、HTML は一行読んだらダメ。要素や属性を換えたらマズいでしょ。
引用返信 編集キー/
■2657 / inTopicNo.5)  Re[4]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ ろん (4回)-(2007/04/13(Fri) 09:25:47)
No2643 (Jitta さん) に返信

Jitta様

ご回答ありがとうございます。
ダメというのは、HTML の編集についてでしょうか。

私がしたいのは、HTML をメモ帳で開いて編集して保存するという
イメージなんですが・・・。

VB で自動化出来たらいいなと思っています。
お知恵がありましたら、よろしくお願いします。

以上です。

引用返信 編集キー/
■2669 / inTopicNo.6)  Re[5]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ 774RR (9回)-(2007/04/13(Fri) 11:53:22)
以下のような場合に置換していいのか?ってことでしょ
置換元 : IMG
置換先 : IMAGE
HTML 本文 : <P>IMG さんぷるです<IMG SRC="IMG/IMG.JPG" ALT="SAMPLE IMG"></P>

本当に全部の IMG を置換して IMAGE に置換したいの?置換していいの?

俺はテキスト置換に VisualBasic 使いたいなんて微塵も思わんなー
単純置換なら sed でいいぢゃん。

# エンコードの説明はめんどくさいのでパス
# 実体参照も置換したいとか?パス2させていただきまする
引用返信 編集キー/
■2688 / inTopicNo.7)  Re[6]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ ろん (5回)-(2007/04/13(Fri) 13:43:50)
No2669 (774RR さん) に返信

774RR 様

回答ありがとうございます。
具体的に言いますと、HTML内に記述されているリンク先を
変更したいというものでした。

sed って UNIX系のですよね。
さらにわからない世界に入っていってしまいます。

勉強がてらに作っているアプリが、皆様から頂きました回答の
おかげで、少し形になってまいりました。
でも相変わらずエラーばかりです。

改めまして、端的にご質問させていただきます。
一度閉じさせていただきます。
ご助言ありがとうございました。

解決済み
引用返信 編集キー/
■2691 / inTopicNo.8)  Re[7]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ ぼのぼの (31回)-(2007/04/13(Fri) 14:04:11)
手元にVB6の環境が無いので試せないのですが、FileSystemObjectって
EUC-JPやutf-8のテキストファイルをちゃんと読み書きできるのでしょうか?

まぁ絶対全角文字を含まないとか、絶対全てSJISとかいう前提なら
問題ないのかもしれませんけども。

あと、私なら、対象ファイルを直接書き換えるというのは、
バグがあって壊しちゃったとき戻せなくなるのが怖いのでやりません。

ツリー構造そのままに、新規フォルダにコピーを作成します。
txtやhtmlは読みながら書き出し、他のファイルは単純にコピー。

プログラムを動かす前に手動でバックアップとる、という運用で回避できますが、
忘れたとき、ファイルを直接置き換える方法は、復元できないという意味でごみ箱行きよりタチが悪いです。
解決済み
引用返信 編集キー/
■2695 / inTopicNo.9)  Re[8]: 【VB6】フォルダ内全てのファイルの特定文字列を置換方法
□投稿者/ ろん (8回)-(2007/04/13(Fri) 14:28:17)
No2691 (ぼのぼの さん) に返信

ほのぼの様

回答ありがとうございます。
これは、自分の勉強という趣旨が強いプログラムです。
今後応用が利きそうな題材で選んだものです。

ファイルは、フォルダごとバックアップを取って
壊れても構わないと考えて頂いて結構です。

もちろん正しく変換させることが、目的ですので
エンコード等も考慮しなければならないと思いますが
なにせ、他に方法を思いつく経験もありませんのでご理解ください。

ここは閉じさせて頂いて、新しく作成中のサンプルもつけて
重要度の低い問題点を省き、新たに質問を出させて頂きました。

どうぞ宜しくお願い致します。
以上です。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -