人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

vbsの質問です
フォルダの中に000.txt〜130.txtまでたくさんテキストファイルがあります。
このテキストファイルの中に このファイル名 という文字がすべてのテキストファイルに入っています。
この文字を各ファイルの000.txtなどのファイル名に置換したいのですが、どのように組めばよいかわかりません
教えてください

●質問者: takanii
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●500ポイント ベストアンサー

id:takanii さんが、以前 質問でアップしていたコードを、少々、変更してみました。

Option Explicit

Const TARGET_FOLDER = "D:\target-dir"  ' 処理対象のディレクトリ

Const REPLACE_FROM = "このファイル名"

Const ForReading = 1 ' 読み込み
Const ForWriting = 2 ' 書きこみ(上書きモード)
Const ForAppending = 8 ' 書きこみ(追記モード)

Dim objFSO, objFolder, objFile, objSubFolder, objTXT
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(TARGET_FOLDER)

For Each objFile In objFolder.Files
 Dim strFilePath, infile, outfile, strData
 strFilePath = objFSO.BuildPath(TARGET_FOLDER, objFile.Name)
 Set infile = objFSO.OpenTextFile(strFilePath,ForReading)
 strData = infile.ReadAll
 infile.Close
 Set infile = Nothing
 Set outfile = objFSO.OpenTextFile(strFilePath,ForWriting)  ' (上書き)
 outfile.Write Replace(strData,REPLACE_FROM, objFile.Name)
 outfile.Close
 Set outfile = Nothing
Next

処理対象のディレクトリにあるファイルは、全て置換の対象になってます。
バックアップを取ってから、試してみてください。





追記です。

vbsファイルを入れたフォルダ内の拡張子.txtファイルを全て置換し、置換する単語を
000.txtではなく 拡張子を除いた 000 というファイル名だけで置換するにはどこをいじればいいでしょうか?

一部、変更しました。

Option Explicit

Const TARGET_FOLDER = "D:\target-dir"  ' 処理対象のディレクトリ

Const REPLACE_FROM = "このファイル名"

Dim RE_IS_TXT
Set RE_IS_TXT = New RegExp
RE_IS_TXT.Pattern = "^(.*)\.txt$"
RE_IS_TXT.IgnoreCase = True

Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Dim objFSO, objFolder, objFile
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(TARGET_FOLDER)

For Each objFile In objFolder.Files
 Dim strFilePath, infile, outfile, strData
 Dim objMatches
 Set objMatches = RE_IS_TXT.Execute(objFile.Name)
 If objMatches.Count > 0 Then
 strFilePath = objFSO.BuildPath(TARGET_FOLDER, objFile.Name)
 Set infile = objFSO.OpenTextFile(strFilePath,ForReading)
 strData = infile.ReadAll
 infile.Close
 Set infile = Nothing
 Set outfile = objFSO.OpenTextFile(strFilePath,ForWriting)  '(上書き)
 outfile.Write Replace(strData,REPLACE_FROM, objMatches(0).SubMatches(0))
 outfile.Close
 Set outfile = Nothing
 End If
Next

takaniiさんのコメント
vbsファイルを入れたフォルダ内の拡張子.txtファイルを全て置換し、置換する単語を 000.txtではなく 拡張子を除いた 000 というファイル名だけで置換するにはどこをいじればいいでしょうか?

a-kuma3さんのコメント
>> vbsファイルを入れたフォルダ内の拡張子.txtファイルを全て置換し、置換する単語を 000.txtではなく 拡張子を除いた 000 というファイル名だけで置換するにはどこをいじればいいでしょうか? << 回答に、追記しました。

takaniiさんのコメント
こちらのプログラムを使い変換するとテキストファイルの中の他の文字が文字化けしてしまいます その場合どうすればいいですか?

a-kuma3さんのコメント
元のテキストファイルの文字コードは、何でしょうか?

質問者から

utf8です


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ