※指定したフォルダ以下の、ある指定したファイル拡張子をすべて探し出す。
※さらにそのファイル内に存在する言葉を指定した言葉に置き換える。
※言葉を指定する場合に正規表現を使うことが出来る。
以上の条件にあうソフトを探しています。
有料でもかまいません、よろしくお願い致します。
フリーソフトのものですが、下記はどうでしょうか。
ファイル名の名前に 「*.捜したい拡張子」、含まれる文字列、探す場所を入力して検索し、
置換したい文字列を入れて、置換を実行することで希望される処理が出来る戸思います。
1.以下のスクリプトをメモ帳などで[一括置換.vbs]などの名称で、デスクトップあたりに保存します。
2.■の部分を修正します。
3.ダブルクリックで実行されます。
Option Explicit
Const EXT = "txt" '小文字 '■対象ファイルの拡張子
Const TARGET_FOLDER = "D:\WSH" '■対象フォルダ
Const REG_IGNORECASE = False '■大文字小文字の区別を無効
Const REG_PATTERN = "置換前" '■正規表現のパターン
Const REPLACE_TEXT = "置換後" '■置換後の文字列
Dim objFSO, objFolder
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(TARGET_FOLDER)
Call ReplaceFiles(objFolder)
MsgBox "おしまい"
Sub ReplaceFiles(objFolder)
Dim objFile, objSubFolder
For Each objFile In objFolder.Files
If EXT = GetFileExt(objFile.Path) Then
Call ReplaceFile(objFile.Path)
End If
Next
For Each objSubFolder In objFolder.SubFolders
Call ReplaceFiles(objSubFolder)
Next
End Sub
Sub ReplaceFile(ByVal fileName)
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Dim f1, f2, strData, file
Set f1 = objFSO.OpenTextFile(fileName,ForReading)
Set f2 = objFSO.CreateTextFile( fileName & ".tmp", True )
strData = f1.ReadAll
Dim oRe, oMatch, oMatches
Set oRe = WScript.CreateObject("VBScript.RegExp")
With oRe
.Global = True
.IgnoreCase = REG_IGNORECASE
End With
oRe.Pattern = REG_PATTERN
strData = oRe.Replace( strData, REPLACE_TEXT)
f2.Write(strData)
f1.Close
f2.Close
Set f1 = Nothing
Set f2 = Nothing
objFSO.DeleteFile(fileName)
Set file = objFSO.GetFile(fileName & ".tmp")
file.Name = objFSO.GetFileName(fileName)
End Sub
Function GetFileExt(ByVal sPath)
Dim sFileExt
sFileExt = objFSO.GetExtensionName(sPath)
GetFileExt = LCase(sFileExt)
End Function
※VBScriptの正規表現のパターンはこちらを参考にしてください。
http://www.microsoft.com/japan/msdn/columns/scripting/scripting0...
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...
http://www.sirmiles.com/software/repl_ace.htm
Repl-Ace(リプル・エース)
Web制作の業務で自分も使っていますが、こういうことでしょうか。
ワイルドカードも使えますし、サブフォルダも検索対象に出来ます。
コメント(1件)
ですが、そのファイルを全部 Linux へ持っていければ、全て標準の機能で出来そうに思います。
・特定ディレクトリの特定拡張子のファイルを探し、そのファイルに何かをする ー> find コマンドで
・正規表現で文字列の置き換え ー> sed コマンドで
または、Perl, PHP などでスクリプトを書いてやる事もできます。
特定のディレクトリで、条件に合うファイルを探して
それぞれを読み込んで、必要な部分を置き換え保存する
文字コードに気を付ける以外はそれほど難しくないと思います。