vbsの質問です

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

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2014/11/05 11:24:50
  • 終了:2014/11/05 14:18:29

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4488ベストアンサー獲得回数18572014/11/05 12:01:33

ポイント500pt

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
他2件のコメントを見る
id:takanii

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

2014/11/08 17:43:09
id:a-kuma3

元のテキストファイルの文字コードは、何でしょうか?

2014/11/08 22:41:53

その他の回答(0件)

id:a-kuma3 No.1

a-kuma3回答回数4488ベストアンサー獲得回数18572014/11/05 12:01:33ここでベストアンサー

ポイント500pt

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
他2件のコメントを見る
id:takanii

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

2014/11/08 17:43:09
id:a-kuma3

元のテキストファイルの文字コードは、何でしょうか?

2014/11/08 22:41:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません