• ベストアンサー

フォルダ名とテキスト内容の置換/変更ユーティリティ

ファイル名やテキスト内容を変更するのに便利なユーティリティソフトを探しています。何かご存知ないでしょうか? イメージしているのは、りねーむ君などの単純なファイル名変換ソフトではなくなく、○フォルダ名が変更できる○指定テキストファイル内の、指定文字列を置換できる ようなものです。 業務上、3階層程度の構造をもったフォルダのフォルダ名と、その中のある場所に保存されているフォームの決まったテキストファイル内の一定の文字列を、変換しなくてはならないことが非常に多く、煩雑な手作業に辟易しています。何かよいソフト/アイディアが御座いましたらぜひご教示いただきたくお願いします…。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

'□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ myWORD1 = "変える前の単語" myWORD2 = "変えた後の単語" myEXT = "txt" '対象にする拡張子(半角小文字) '□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ Set mySh = CreateObject("Shell.Application") Set myPath = mySh.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, 0) If myPATH Is Nothing Then : MsgBox "未選択(終了)" : WScript.Quit : End If If myPath.Items Is Nothing Then : MsgBox "未選択(終了)" : WScript.Quit : End If If myPath.Items.Item Is Nothing Then : MsgBox "未選択(終了)" : WScript.Quit : End If myFLD = myPath.Items.Item.Path Set mySh = Nothing : Set myPath = Nothing Set myFS = CreateObject("Scripting.FileSystemObject") Call mySFLDs(myFLD) Set myFS = Nothing MsgBox "完了" Sub mySFLDs(myFLDp) For Each mySFLD in myFS.GetFolder(myFLDp).SubFolders If mySFLD.Name <> Replace(mySFLD.Name, myWORD1, myWORD2) Then mySFLD.Name = Replace(mySFLD.Name, myWORD1, myWORD2) End If For Each myF In mySFLD.Files If LCase(myFS.GetExtensionName(myF)) = "txt" Then With myFS.GetFile(myF).OpenAsTextStream myTEMP = Replace(.ReadAll, myWORD1, myWORD2) .Close End With With myFS.GetFile(myF).OpenAsTextStream(2) .WriteLine myTEMP .Close End With End If Next Call mySFLDs(mySFLD) Next End Sub 上の文をコピーして メモ帳に貼り付けて  一括変更.vbs という名前で デスクトップに保存してください 先頭の 単語 と txt は変更してください 保存したものを ダブルクリックすると始まります フォルダを指定すると  全てのフォルダ と 全てのtxtの 全ての行の単語 を置換します 質問や補足では 希望が良く分からなかったので 全部置換しました 希望と違うところがあれば具体的に教えてください 注意 実行後は元に戻せないので バックアップをしてからテストしてください

tomahork
質問者

お礼

ありがとうございます!! すごく参考になりました。 できなかったことをどうやったらできるか理解できたので、いただいたものをもとにVBでプログラムを作成することができました。 すごく助かりました。返事が遅くなって申し訳ありませんでした。

その他の回答 (1)

回答No.1

フォルダ名は 最大3階層なのでしょうか 変更するのは "りんご" を "みかん" にする という1種類ですか 複数の単語を それぞれ対応するものに変換するようなものでしょうか http://oshiete1.goo.ne.jp/qa3506174.html?ans_count_asc=0 少し違いますが 考え方は似ているので これをもとに 希望のものを作成できます 具体的な内容を教えてください

tomahork
質問者

補足

ありがとうございます。 フォルダは、3階層で固定です。 そして、変更するのは、 各階層の「フォルダ名」と、 各階層のフォルダ内に含まれるtxtファイル内の指定行に存在する文字列です。 (固定長でないため、行のみ指定するイメージです。) テキストファイルは各階層に1つ、計3種類あります。 指定する行は3つのテキストファイル合計で16あります。 各テキストファイルは20行程度(1行は30文字を超えない)で構成されています。 このような情報で補足になっているでしょうか? ご協力いただけましたら大変助かります。よろしくお願いします。

関連するQ&A