#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.0
Author: H. Tsubota
Script Function:
カレントフォルダ(通常はスクリプトのあるフォルダ)以下のAutoItスクリプト(拡張子au3)を
検索し、配列にして返す
COMのFileSystemObjectを使った実装
#ce ----------------------------------------------------------------------------
#include <Array.au3>
Local $result = Search("au3")
If 0 <= $result[0] Then
_ArrayDisplay($result, "見つかったファイル")
Else
MsgBox(0, "", "Error occurred")
EndIf
; カレントフォルダ以下を検索し、見つかったファイルを配列にして返す
; $extension ファイル拡張子。指定が無い場合は任意のファイル。
; $recursively サブフォルダを再帰的に検索するかどうか。デフォルトでは再帰的に検索する。
; 成功 : 見つかったファイル名の配列。1要素目は見つかったファイルの数。
; 失敗 : 1要素目が-1の配列
Func Search($extension = Default, $recursively = True)
$fso = ObjCreate("Scripting.FileSystemObject")
$folder = $fso.GetFolder(@WorkingDir)
Local $result[1]
$result[0] = 0
serachCore($fso, $folder, $extension, $recursively, $result)
Return $result
EndFunc
; 検索処理本体
; $fso : FileSystemObject
; $folder : FileSystemObjectの返すフォルダオブジェクト。検索対象となるフォルダ
; $extension : ファイル拡張子。Defaultの場合は任意のファイル。
; $recursively : サブフォルダを再帰的に検索するかどうか。
; $result : 見つかったファイルが追加される配列
Func serachCore($fso, $folder, $extension, $recursively, ByRef $result)
For $file In $folder.Files
If $extension = Default Then
_ArrayAdd ($result, $fso.GetAbsolutePathName($file.Name))
$result[0] += 1
Else
If $fso.GetExtensionName( $file.Name ) = $extension Then
_ArrayAdd ($result, $fso.GetAbsolutePathName($file.Name))
$result[0] += 1
EndIf
EndIf
next
If $recursively Then
For $subFolder In $folder.SubFolders
serachCore($fso, $subFolder, $extension, $recursively, $result)
next
EndIf
EndFunc