#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.0
Author: H. Tsubota
Script Function:
カレントフォルダ(通常はスクリプトのあるフォルダ)以下のAutoItスクリプト(拡張子au3)を
検索し、配列にして返す
AutoItのFileFindFirstFile関数, FileFindNextFile関数を使った実装
#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)
Local $result[1]
$result[0] = 0
If Not SearchCore($extension, $recursively, $result) Then
$result[0] = -1
EndIf
Return $result
EndFunc
; 検索処理本体
; $extension : ファイル拡張子。Defaultの場合は任意のファイル。
; $recursively : サブフォルダを再帰的に検索するかどうか。
; $result : 見つかったファイルが追加される配列
Func SearchCore($extension, $recursively, ByRef $result)
$search = FileFindFirstFile("*")
If $search = -1 Then
$result[0] = -1
Return False
EndIf
While True
$file = FileFindNextFile($search)
If @error Then
ExitLoop
EndIf
If $recursively And FileGetAttrib ($file) = "D" Then
; サブフォルダの再帰検索
$buffer = @WorkingDir
FileChangeDir ( @WorkingDir & "\" & $file )
$success = SearchCore($extension, $recursively, $result)
FileChangeDir ( $buffer )
If Not $success Then
$result[0] = -1
Return False
EndIf
Else
; ファイル処理
If $extension = Default Then
_ArrayAdd ($result, @WorkingDir & "\"& $file)
$result[0] += 1
ElseIf $extension = GetExtension($file) Then
_ArrayAdd ($result, @WorkingDir & "\"& $file)
$result[0] += 1
EndIf
EndIf
WEnd
FileClose($search)
Return True
EndFunc
; ファイル名から拡張子を取得
Func GetExtension($fileName)
Local $words = StringSplit($fileName, ".")
Return $words[$words[0]]
EndFunc ;==>GetExtension