トッカンソフトウェア

WSH 指定文字が含まれないファイルを検索

WSHを利用したサンプルです。指定文字が含まれないファイルを探し、処理結果ファイルに出力します。
実際に編集したい処理に変更して下さい。


				
Dim fromDir,outFile,ext,charset

'検索フォルダ
fromDir = "C:\xampp\htdocs"

'処理結果出力ファイル
outFile = "C:\work\out.txt"

'対象ファイルの拡張子
ext = "html"

'検索文字列
word = "TEST"

Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim objBaseDir
Dim objFile

Dim ary()
ReDim ary(0)

Dim objADS
Set objADS = WScript.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 "終了"


			

ページのトップへ戻る