WSH 指定文字が含まれないファイルを検索
WSHを利用したサンプルです。指定文字が含まれないファイルを探し、処理結果ファイルに出力します。実際に編集したい処理に変更して下さい。
Dim fromDir,outFile,ext,charset
'検索フォルダ
fromDir = "C:\xampp\htdocs"
'処理結果出力ファイル
outFile = "C:\work\out.txt"
'対象ファイルの拡張子
ext = "html"
'検索文字列
word = "TEST"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objBaseDir
Dim objFile
Dim ary()
ReDim ary(0)
Dim objADS
Set objADS = CreateObject("ADODB.Stream")
'文字コードを指定
objADS.Charset = "UTF-8"
'メイン処理呼び出し
exeDir fromDir
'処理結果出力
writeAry
Set objADS = Nothing
'メイン処理
Sub exeDir(path)
Dim workDir
Dim objDir
'サブフォルダの位置を取得
If path = fromDir Then
workDir = toDir + "\"
Else
workDir = toDir + "\" + Mid(path, Len(fromDir) + 2) + "\"
End If
'対象フォルダを処理
Set objBaseDir = objFSO.getFolder(path)
ary(0) = word + "が含まれていないファイル"
'ファイル一覧
for each objFile in objBaseDir.files
'拡張子が指定と一致し、該当文字が含まれない場合
If LCase(objFSO.GetExtensionName(objFile.path)) = LCase(ext) And _
Not isSearch(objFile.path) Then
'出力配列に追加
ReDim Preserve ary(UBound(ary) + 1)
ary(UBound(ary)) = objFile.path
End If
next
'フォルダ一覧
for each objDir in objBaseDir.subFolders
'サブフォルダを処理
exeDir objDir.path
next
End Sub
Function isSearch(path)
isSearch = false
'Stream オブジェクトを開く
objADS.Open
'ファイルを開く
objADS.LoadFromFile path
If InStr(objADS.ReadText(-1),word) <> 0 Then
isSearch = true
End If
'Stream オブジェクトを閉じる
objADS.Close
End Function
Sub writeAry()
'テキストを指定( 1 はバイナリ)
objADS.type = 2
'Stream オブジェクトを開く
objADS.Open
'配列内容の出力
For Each str In ary
objADS.WriteText str, 1
Next
'ファイルが存在しても上書き( 1 はファイルが存在した場合にエラー)
objADS.SaveToFile outFile, 2
'Stream オブジェクトを閉じる
objADS.Close
End Sub
Set objFSO = Nothing
wscript.echo "終了"
ページのトップへ戻る