Ho creato questo piccolo codicino e non so perché non funzia, se lo uso per una sola cartella restituisce l'output in console giusto, ma messo così non mi dà niente!
Nemmeno errori in realtà, secondo voi cosa sbaglio?
Cioè è chiaro quello che deve fare, deve restituire dell'output specifico ad ogni azione eseguita su un file all'interno di qualsiasi cartella/subcartella a partire dall'@HomePath, però non so forse ho combinato un casino con gli array.
Chiedo umilmente il parere dei più esperti!
Nemmeno errori in realtà, secondo voi cosa sbaglio?
Cioè è chiaro quello che deve fare, deve restituire dell'output specifico ad ogni azione eseguita su un file all'interno di qualsiasi cartella/subcartella a partire dall'@HomePath, però non so forse ho combinato un casino con gli array.
Chiedo umilmente il parere dei più esperti!
Codice:
Local $Search = _FileListToArrayRec (@HomePath, "*.*", 2, 1, 0, 2)
Local $num = $Search[0]
Local $i
Local $e
Local $f
Local $pBuffer[$num]
Local $aData[$num]
Local $hDirectory[$num]
Local $Datas
If IsArray ($Search) Then
For $i = 1 To $Search[0]
;ConsoleWrite ($Search[$i] & @CRLF)
$hDirectory[$i] = _WinAPI_CreateFileEx($Search[$i], $OPEN_EXISTING, $FILE_LIST_DIRECTORY, BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE), $FILE_FLAG_BACKUP_SEMANTICS)
If @error Then
_WinAPI_ShowLastError('', 1)
EndIf
$pBuffer[$i] = _WinAPI_CreateBuffer(8388608)
$Datas = $aData[$i]
$Datas = _WinAPI_ReadDirectoryChanges($hDirectory[$i], BitOR($FILE_NOTIFY_CHANGE_FILE_NAME, $FILE_NOTIFY_CHANGE_DIR_NAME), $pBuffer[$i], 8388608, 1)
Check ()
Next
EndIf
Func Check ()
;While 1
If IsArray ($Datas) Then
For $e = 1 To $Datas[0][0]
;ConsoleWrite ($aData[$i][0] & @CRLF)
If $Datas[$e][1] = 1 Then
ConsoleWrite ($Search[$i] & "\" & $Datas[$i][0] & " has been created" & @CRLF)
ElseIf $Datas[$e][1] = 2 Then
ConsoleWrite ($Search[$i] & "\" & $Datas[$i][0] & " has been removed" & @CRLF)
ElseIf $Datas[$e][1] = 3 Then
ConsoleWrite ($Search[$i] & "\" & $Datas[$i][0] & " has been modified" & @CRLF)
ElseIf $Datas[$e][1] = 4 Then
;ConsoleWrite ($g_sPath & "\" & $aData[$i][0] & " has been renamed" & @CRLF)
Local $OldName = $Datas[$e][0]
ElseIf $Datas[$e][1] = 5 Then
ConsoleWrite ($Search[$i] & "\" & $OldName & " has been renamed to " & $Search[$i] & "\" & $Datas[$e][0] & @CRLF)
Else
ConsoleWrite ($Datas[$e][0] & @CRLF)
ConsoleWrite ($Datas[$e][1] & @CRLF)
EndIf
Next
EndIf
;WEnd
EndFunc