first commit

master
Bernhard 2017-09-10 14:33:06 +02:00
commit b61fec2d47
6 changed files with 1232 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.bak

BIN
Icon256-32.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

0
README.md Normal file
View File

608
fileandfolder.au3 Normal file
View File

@ -0,0 +1,608 @@
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon256-32.ico
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Description=2014 von Bernhard Linz / Bernhard@znil.de
#AutoIt3Wrapper_Res_Fileversion=2.0.0.40
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
Dim $h_suchhandle
Dim $i_Zaehler
Dim $s_Path
Dim $s_temp
Dim $a_dateizeit
Dim $a_aktuellezeit
Dim $a_dateiliste
Dim $i_Sekunden
Dim $i_Dateigroesse
Dim $i_DateiSuchGroesse = 0
Dim $i_DateiSuchAlter = 0
Dim $b_Inverse = False
Global $b_Verbose = False
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $s_Header = _
"+------------------------------------------------------------------------------" & @CRLF & _
"| fileandfolder.exe - Version " & FileGetVersion(@ScriptName) & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| 2013/2015 von Bernhard Linz für http://znil.net - Kontakt: Bernhard@znil.net" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
@CRLF
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $s_HilfeText = _
"Hilfsprogramm für die Abfrage von Werten rund aus dem Dateisystem." & @CRLF & _
"Erstellt weil es mir in Zabbix zu kompliziert war / nicht das war was ich wollte." & @CRLF & _
"genaue Anleitung unter dem Weblink unten am Ende." & @CRLF & _
"Testet den Aufruf auf jeden Fall manuell bevor in in Zabbix als Item einbaut!" & @CRLF & _
"Die Rückgabewerte werden gleichzeitig auch als Exit-Codes zurückgegeben - können also" & @CRLF & _
"auch in Batchdateien mit %ERRORLEVEL% abgefragt werden" & @CRLF & _
"-------------------------------------------------------------------------------" & @CRLF & _
@CRLF & _
"Aufruf: " & @CRLF & _
@CRLF & _
@ScriptName & " <Option> <Datei oder Ordner> [--Verbose]" & @CRLF & _
@CRLF & _
"DirGetSize : gibt die Verzeichnisgröße in Bytes zurück" & @CRLF & _
" ist inklusive aller Unterordner und deren Dateien" & @CRLF & _
" -1 = Verzeichnis nicht gefunden" & @CRLF & _
@CRLF & _
"FileCreateAge : Liefert die Anzahl der vergangenen Sekunden seit der," & @CRLF & _
" Erstellung einer Datei zurück." & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileCount : Zählt die Anzahl von Dateien in einem Ordner" & @CRLF & _
" und gibt die Anzahl zurück, 0 = keine Dateien gefunden" & @CRLF & _
" Unterverzeichnisse werden mitgezählt!" & @CRLF & _
" Es muss ein Verzeichnis angegeben werden!" & @CRLF & _
@CRLF & _
"FileCountR : Wie zuvor, jedoch Rekursiv, Ordner werden mitgezählt" & @CRLF & _
@CRLF & _
"FileCountR2 : Wie zuvor, Rekursiv, Ordner werden nicht mitgezählt" & @CRLF & _
@CRLF & _
"FileFindCount : Gibt die Anzahl der gefundenen Dateien / Ordner zurück auf" & @CRLF & _
" die das Suchmuster zutrifft. Beispiele:" & @CRLF & _
" C:\Daten\*.docx = Alle Dateien die auf .docx enden" & @CRLF & _
" C:\Daten\Test*.* = Alle Dateien die mit Test beginnen" & @CRLF & _
" Es gelten die üblichen Suchmuster mit * und ?" & @CRLF & _
" Dateien in Unterordnern werden nicht gefunden, es wird" & @CRLF & _
" der gewählte Ordner durchsucht." & @CRLF & _
@CRLF & _
"FileCountSize=x : Zählt die Anzahl von Dateien in einem Ordner die größer" & @CRLF & _
" als die mit x angegebene Größe sind und gibt die Anzahl zurück" & @CRLF & _
" 0 = keine Dateien gefunden, Ordner werden ignoriert, keine" & @CRLF & _
" rekursion, Angabe der Größe in Bytes" & @CRLF & _
@CRLF & _
"#FileCountSize=x : Wie zuvor, jedoch 'kleiner als' statt größer" & @CRLF & _
@CRLF & _
@CRLF & _
"FileCountAge=x : Zählt die Anzahl von Dateien in einem Ordner die älter" & @CRLF & _
" als das mit x angegebene Alter sind und gibt die Anzahl zurück" & @CRLF & _
" 0 = keine Dateien gefunden, Ordner werden ignoriert, keine" & @CRLF & _
" Rekursion, Angabe der Zeit in Sekunden" & @CRLF & _
" Basis ist das Erstellungsdatum" & @CRLF & _
@CRLF & _
"#FileCountAge=x : Wie zuvor, nur 'jünger sind' statt älter" & @CRLF & _
@CRLF & _
"FileModifyAge : Liefert die Anzahl der vergangenen Sekunden seit der" & @CRLF & _
" letzten Änderung einer Datei zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileGetSize : gibt die Dateigröße in Bytes zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileGetVersion : gibt die Dateiversion als Typ Char zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"GetAttrib : gibt die Datei- oder Verzeichnisattribute als Typ Char zurück" & @CRLF & _
" -1 = Datei/Verzeichnis nicht gefunden" & @CRLF & _
' Rückgabewert ist eine Kombination von "RASHNDOCTIPL":' & @CRLF & _
' "R" = Read-Only' & @CRLF & _
' "A" = Archive' & @CRLF & _
' "S" = System' & @CRLF & _
' "H" = Hidden' & @CRLF & _
' "N" = Normal' & @CRLF & _
' "D" = Directory' & @CRLF & _
' "O" = Offline' & @CRLF & _
' "C" = Compressed (NTFS compression, not ZIP compression)' & @CRLF & _
' "T" = Temporay' & @CRLF & _
' "I" = Not content-indexed' & @CRLF & _
' "P" = Sparse File' & @CRLF & _
' "L" = Symbolic Link / Junction' & @CRLF & _
@CRLF & _
"--Verbose : Verbose Modus mit Anzeige der Prüfungen etc" & @CRLF & _
"-------------------------------------------------------------------------------" & @CRLF & _
" Im Fehlerfall (wenn z.B. ein ungültiger Parameter oder Ordner nicht gefunden)" & @CRLF & _
" wird -1 zurück gegeben" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| FileandFolder.exe ist FREEWARE!" & @CRLF & _
"| Kopieren, weitergeben ausdrücklich erlaubt!" & @CRLF & _
"| Die jeweils aktuelleste Version und Anleitungen findet Ihr unter:" & @CRLF & _
"| http://znil.net/index.php?title=Zabbix:Template_Windows_Dateien_und_Ordner" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF
; ###################################################################################
; F U N C T I O N E N / S U B R O U T I N E N
; ###################################################################################
; ###################################################################################
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt
Func _ANSI2OEM($text)
$text = DllCall('user32.dll', 'Int', 'CharToOem', 'str', $text, 'str', '')
Return $text[2]
;Return $text
EndFunc ;==>_ANSI2OEM
; ###################################################################################
; Hilfsroutine die den Hilfetext ausgibt
Func _HilfeAusgeben()
ConsoleWrite(_ANSI2OEM($s_Header))
ConsoleWrite(_ANSI2OEM($s_HilfeText))
EndFunc ;==>_HilfeAusgeben
; ###################################################################################
; Soll ganz toll ganze Verzeichnisbäume abgrasen können
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix (bugfix@autoit.de)
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Func _VerboseConsoleWrite($s_VerboseText)
If $b_Verbose = True Then
ConsoleWrite(_ANSI2OEM($s_VerboseText) & @CRLF)
EndIf
EndFunc
; ###################################################################################
; H I L F E
; ###################################################################################
;testen ob wir überhaupt mit einem Parameter gestartet wurden - sonst Hilfe ausgeben
;~ If $CmdLine[0] = 0 Then
;~ _HilfeAusgeben()
;~ Exit 0
;~ EndIf
;testen ob der Parameter 1 ist auf "/?" testen und ebenfalls Hilfe ausgeben
If $CmdLine[0] = 0 Then
_HilfeAusgeben()
Exit 0
EndIf
If $CmdLine[1] = "/?" Then
_HilfeAusgeben()
Exit 0
EndIf
If $CmdLine[0] >= 3 Then
If $CmdLine[3] = "--Verbose" Then
$b_Verbose = True
ConsoleWrite("Aufruf von " & @ScriptName & " mit folgenden Parametern:" & @CRLF)
For $i = 1 To $CmdLine[0]
ConsoleWrite("Parameter " & $i & ": " & $CmdLine[$i] & @CRLF)
Next
EndIf
EndIf
; Restliche Parameter auswerten und Variablen füllen ########################################################
; ##############################################################################################
If $CmdLine[1] = "FileCount" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
_VerboseConsoleWrite("Hole Zeiger auf Verzeichnis")
$h_suchhandle = FileFindFirstFile($s_Path & "*")
_VerboseConsoleWrite("Zähle Dateien")
While @error <> 1
$i_Zaehler = $i_Zaehler + 1
If $b_Verbose = True Then
ConsoleWrite(".")
EndIf
$s_temp = FileFindNextFile($h_suchhandle)
WEnd
If $i_Zaehler > 0 Then
$i_Zaehler = $i_Zaehler - 1
EndIf
_VerboseConsoleWrite(" fertig!")
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCountR" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$a_dateiliste = _GetFilesFolder_Rekursiv($s_Path)
ConsoleWrite($a_dateiliste[0] & @CRLF)
Exit $a_dateiliste[0]
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCountR2" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$a_dateiliste = _GetFilesFolder_Rekursiv($s_Path, "*", 0)
ConsoleWrite($a_dateiliste[0] & @CRLF)
Exit $a_dateiliste[0]
Else
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileFindCount" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = StringReplace($CmdLine[2],"%","*") ; alle % durch * da Zabbix den * nicht mag
$s_Path = StringReplace($s_Path, "/", "\")
_VerboseConsoleWrite("Übergebender Suchparameter ist : " & $CmdLine[2])
_VerboseConsoleWrite("Umgewandelter Suchparamater ist : " & $s_Path)
$i_Zaehler = 0
$h_suchhandle = FileFindFirstFile($s_Path)
While @error <> 1
$i_Zaehler = $i_Zaehler + 1
$s_temp = FileFindNextFile($h_suchhandle)
If $s_temp <> "" Then
_VerboseConsoleWrite($i_Zaehler & ": Datei gefunden : '" & $s_temp & "'")
EndIf
WEnd
If $i_Zaehler > 0 Then
$i_Zaehler = $i_Zaehler - 1
EndIf
If $i_Zaehler = -1 Then
$i_Zaehler = 0
EndIf
ConsoleWrite($i_Zaehler & @CRLF)
Exit $i_Zaehler
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCreateAge" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$a_dateizeit = FileGetTime($CmdLine[2],1) ; 1 = erstellt
; Das Array ist ein 1-dimensionales Array, das sechs Elemente enthält:
; $array[0] = Jahr (vierstellig)
; $array[1] = Monat (Bereich: 01 - 12)
; $array[2] = Tag (Bereich: 01 - 31)
; array[3] = Stunden (Bereich: 00 - 23)
; $array[4] = Minuten (Bereich: 00 - 59)
; $array[5] = Sekunden (Bereich: 00 - 59)
; Es ist zu beachten, dass die Rückgabewerte bei Bedarf mit Nullen aufgefüllt sind.
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
; $sType Auswählen, wie die Differenz zurückgegeben werden soll:
; D - in Tagen
; M - in Monaten
; Y - in Jahren
; w - in Wochen
; h - in Stunden
; n - in Minuten
; s - in Sekunden
ConsoleWrite($i_Sekunden & @CRLF)
Exit $i_Sekunden
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileModifyAge" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$a_dateizeit = FileGetTime($CmdLine[2],0) ; 0 = geändert
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
; $sType Auswählen, wie die Differenz zurückgegeben werden soll:
; D - in Tagen
; M - in Monaten
; Y - in Jahren
; w - in Wochen
; h - in Stunden
; n - in Minuten
; s - in Sekunden
ConsoleWrite($i_Sekunden & @CRLF)
Exit $i_Sekunden
EndIf
; ##############################################################################################
If $CmdLine[1] = "GetAttrib" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = StringReplace($CmdLine[2], "/", "\")
_VerboseConsoleWrite("Übergebende Datei/Ordner ist : " & $CmdLine[2])
_VerboseConsoleWrite("Umgewandelter Pfad ist : " & $s_Path)
If FileExists($s_Path) = 0 Then
_VerboseConsoleWrite("Datei/Verzeichnis nicht vorhanden!")
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_temp = FileGetAttrib($s_Path)
ConsoleWrite($s_temp & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileGetSize" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$i_Dateigroesse = FileGetSize($CmdLine[2])
ConsoleWrite($i_Dateigroesse & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileGetVersion" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_temp = FileGetVersion($CmdLine[2])
ConsoleWrite($s_temp & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "DirGetSize" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$i_Dateigroesse = DirGetSize($CmdLine[2])
ConsoleWrite($i_Dateigroesse & @CRLF)
Exit $i_Dateigroesse
EndIf
; ##############################################################################################
If StringLeft($CmdLine[1], StringLen("FileCountSize=")) = "FileCountSize=" Or StringLeft($CmdLine[1], StringLen("#FileCountSize=")) = "#FileCountSize=" Then
If StringLeft($CmdLine[1], 1) = "#" Then
$i_DateiSuchGroesse = Int(StringReplace($CmdLine[1], "#FileCountSize=", ""))
$b_Inverse = True
If $b_Verbose = True Then
ConsoleWrite("Suche Dateien die kleiner sind als ")
EndIf
Else
$i_DateiSuchGroesse = Int(StringReplace($CmdLine[1], "FileCountSize=", ""))
$b_Inverse = False
If $b_Verbose = True Then
ConsoleWrite(_ANSI2OEM("Suche Dateien die größer sind als "))
EndIf
EndIf
_VerboseConsoleWrite($i_DateiSuchGroesse & " Bytes")
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$h_suchhandle = FileFindFirstFile($s_Path & "*")
While @error <> 1
$s_temp = FileFindNextFile($h_suchhandle)
If @error = 1 Then
ExitLoop
EndIf
If StringInStr(FileGetAttrib($s_temp), "D") = 0 Then
If $b_Inverse = False Then
If FileGetSize($s_Path & $s_temp) >= $i_DateiSuchGroesse Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " >= " & $i_DateiSuchGroesse)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu klein : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " < " & $i_DateiSuchGroesse)
EndIf
Else
If FileGetSize($s_Path & $s_temp) <= $i_DateiSuchGroesse Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " <= " & $i_DateiSuchGroesse)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu groß : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " < " & $i_DateiSuchGroesse)
EndIf
EndIf
EndIf
WEnd
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!" & @CRLF)
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]) & @CRLF)
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
If StringLeft($CmdLine[1], StringLen("FileCountAge=")) = "FileCountAge=" Or StringLeft($CmdLine[1], StringLen("#FileCountAge=")) = "#FileCountAge=" Then
If StringLeft($CmdLine[1], 1) = "#" Then
$i_DateiSuchAlter = Int(StringReplace($CmdLine[1], "#FileCountAge=", ""))
$b_Inverse = True
Else
$i_DateiSuchAlter = Int(StringReplace($CmdLine[1], "FileCountAge=", ""))
$b_Inverse = False
EndIf
;ConsoleWrite("Dateisuchgroesse = '" & $i_DateiSuchAlter & "'" & @CRLF)
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$h_suchhandle = FileFindFirstFile($s_Path & "*")
While @error <> 1
$s_temp = FileFindNextFile($h_suchhandle)
If @error = 1 Then
ExitLoop
EndIf
If StringInStr(FileGetAttrib($s_temp), "D") = 0 Then
$a_dateizeit = FileGetTime($s_Path & $s_temp, 1) ; 1 = erstellt
; Das Array ist ein 1-dimensionales Array, das sechs Elemente enthält:
; $array[0] = Jahr (vierstellig)
; $array[1] = Monat (Bereich: 01 - 12)
; $array[2] = Tag (Bereich: 01 - 31)
; array[3] = Stunden (Bereich: 00 - 23)
; $array[4] = Minuten (Bereich: 00 - 59)
; $array[5] = Sekunden (Bereich: 00 - 59)
; Es ist zu beachten, dass die Rückgabewerte bei Bedarf mit Nullen aufgefüllt sind.
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
If $b_Inverse = False Then
If $i_Sekunden >= $i_DateiSuchAlter Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & $i_DateiSuchAlter & " <= " & $i_Sekunden)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu neu : " & $s_temp & " : " & $i_DateiSuchAlter & " > " & $i_Sekunden)
EndIf
Else
If $i_Sekunden <= $i_DateiSuchAlter Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & $i_DateiSuchAlter & " <= " & $i_Sekunden)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu alt : " & $s_temp & " : " & $i_DateiSuchAlter & " > " & $i_Sekunden)
EndIf
EndIf
EndIf
WEnd
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
;~ Case Else
ConsoleWrite(_ANSI2OEM("Unbekannter Parameter: " & $CmdLine[1] & @CRLF))
Exit 1

BIN
fileandfolder.exe Normal file

Binary file not shown.

623
fileandfolderV3.au3 Normal file
View File

@ -0,0 +1,623 @@
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon256-32.ico
#AutoIt3Wrapper_Outfile=fileandfolder.exe
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Description=2014-2017 von Bernhard Linz / Bernhard@znil.de
#AutoIt3Wrapper_Res_Fileversion=3.0.0.6
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
Dim $h_suchhandle
Dim $i_Zaehler
Dim $s_Path
Dim $s_temp
Dim $a_dateizeit
Dim $a_aktuellezeit
Dim $a_dateiliste
Dim $i_Sekunden
Dim $i_Dateigroesse
Dim $i_DateiSuchGroesse = 0
Dim $i_DateiSuchAlter = 0
Dim $b_Inverse = False
Dim $s_Suchmuster = "*"
Global $b_Verbose = False
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $s_Header = _
"+------------------------------------------------------------------------------" & @CRLF & _
"| fileandfolder.exe - Version " & FileGetVersion(@ScriptName) & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| 2013/2015 von Bernhard Linz für http://znil.net - Kontakt: Bernhard@znil.net" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
@CRLF
; 10 20 30 40 50 60 70 80
; 12345678901234567890123456789012345678901234567890123456789012345678901234567890
Dim $s_HilfeText = _
"Hilfsprogramm für die Abfrage von Werten rund aus dem Dateisystem." & @CRLF & _
"Erstellt weil es mir in Zabbix zu kompliziert war / nicht das war was ich wollte." & @CRLF & _
"genaue Anleitung unter dem Weblink unten am Ende." & @CRLF & _
"Testet den Aufruf auf jeden Fall manuell bevor in in Zabbix als Item einbaut!" & @CRLF & _
"Die Rückgabewerte werden gleichzeitig auch als Exit-Codes zurückgegeben - können also" & @CRLF & _
"auch in Batchdateien mit %ERRORLEVEL% abgefragt werden" & @CRLF & _
"-------------------------------------------------------------------------------" & @CRLF & _
@CRLF & _
"Aufruf: " & @CRLF & _
@CRLF & _
@ScriptName & " <Option> <Datei oder Ordner> [Suchmaske] [--Verbose]" & @CRLF & _
@CRLF & _
"DirGetSize : gibt die Verzeichnisgröße in Bytes zurück" & @CRLF & _
" ist inklusive aller Unterordner und deren Dateien" & @CRLF & _
" -1 = Verzeichnis nicht gefunden" & @CRLF & _
@CRLF & _
"FileCreateAge : Liefert die Anzahl der vergangenen Sekunden seit der," & @CRLF & _
" Erstellung einer Datei zurück." & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileCount : Zählt die Anzahl von Dateien in einem Ordner" & @CRLF & _
" und gibt die Anzahl zurück, 0 = keine Dateien gefunden" & @CRLF & _
" Unterverzeichnisse werden mitgezählt!" & @CRLF & _
" Es muss ein Verzeichnis angegeben werden!" & @CRLF & _
@CRLF & _
"FileCountR : Wie zuvor, jedoch Rekursiv, Ordner werden mitgezählt" & @CRLF & _
@CRLF & _
"FileCountR2 : Wie zuvor, Rekursiv, Ordner werden nicht mitgezählt" & @CRLF & _
@CRLF & _
"FileFindCount : Gibt die Anzahl der gefundenen Dateien / Ordner zurück auf" & @CRLF & _
" die das Suchmuster zutrifft. Beispiele:" & @CRLF & _
" C:\Daten\*.docx = Alle Dateien die auf .docx enden" & @CRLF & _
" C:\Daten\Test*.* = Alle Dateien die mit Test beginnen" & @CRLF & _
" Es gelten die üblichen Suchmuster mit * und ?" & @CRLF & _
" Dateien in Unterordnern werden nicht gefunden, es wird" & @CRLF & _
" der gewählte Ordner durchsucht." & @CRLF & _
@CRLF & _
"FileCountSize=x : Zählt die Anzahl von Dateien in einem Ordner die größer" & @CRLF & _
" als die mit x angegebene Größe sind und gibt die Anzahl zurück" & @CRLF & _
" 0 = keine Dateien gefunden, Ordner werden ignoriert, keine" & @CRLF & _
" rekursion, Angabe der Größe in Bytes" & @CRLF & _
@CRLF & _
"#FileCountSize=x : Wie zuvor, jedoch 'kleiner als' statt größer" & @CRLF & _
@CRLF & _
@CRLF & _
"FileCountAge=x : Zählt die Anzahl von Dateien in einem Ordner die älter" & @CRLF & _
" als das mit x angegebene Alter sind und gibt die Anzahl zurück" & @CRLF & _
" 0 = keine Dateien gefunden, Ordner werden ignoriert, keine" & @CRLF & _
" Rekursion, Angabe der Zeit in Sekunden" & @CRLF & _
" Basis ist das Erstellungsdatum" & @CRLF & _
@CRLF & _
"#FileCountAge=x : Wie zuvor, nur 'jünger sind' statt älter" & @CRLF & _
@CRLF & _
"FileModifyAge : Liefert die Anzahl der vergangenen Sekunden seit der" & @CRLF & _
" letzten Änderung einer Datei zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileGetSize : gibt die Dateigröße in Bytes zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"FileGetVersion : gibt die Dateiversion als Typ Char zurück" & @CRLF & _
" -1 = Datei nicht gefunden" & @CRLF & _
@CRLF & _
"GetAttrib : gibt die Datei- oder Verzeichnisattribute als Typ Char zurück" & @CRLF & _
" -1 = Datei/Verzeichnis nicht gefunden" & @CRLF & _
' Rückgabewert ist eine Kombination von "RASHNDOCTIPL":' & @CRLF & _
' "R" = Read-Only' & @CRLF & _
' "A" = Archive' & @CRLF & _
' "S" = System' & @CRLF & _
' "H" = Hidden' & @CRLF & _
' "N" = Normal' & @CRLF & _
' "D" = Directory' & @CRLF & _
' "O" = Offline' & @CRLF & _
' "C" = Compressed (NTFS compression, not ZIP compression)' & @CRLF & _
' "T" = Temporay' & @CRLF & _
' "I" = Not content-indexed' & @CRLF & _
' "P" = Sparse File' & @CRLF & _
' "L" = Symbolic Link / Junction' & @CRLF & _
@CRLF & _
'[Suchmaske] : Schränkt bei Verzeichnisbefehlen auf Dateien entsprechend' & @CRLF & _
' dieser Maske ein, z.B. *.txt - Funktioniert mit:' & @CRLF & _
' FileCountSize, FileCountAge' & @CRLF & _
"--Verbose : Verbose Modus mit Anzeige der Prüfungen etc" & @CRLF & _
"-------------------------------------------------------------------------------" & @CRLF & _
" Im Fehlerfall (wenn z.B. ein ungültiger Parameter oder Ordner nicht gefunden)" & @CRLF & _
" wird -1 zurück gegeben" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF & _
"| FileandFolder.exe ist FREEWARE!" & @CRLF & _
"| Kopieren, weitergeben ausdrücklich erlaubt!" & @CRLF & _
"| Die jeweils aktuelleste Version und Anleitungen findet Ihr unter:" & @CRLF & _
"| http://znil.net/index.php?title=Zabbix:Template_Windows_Dateien_und_Ordner" & @CRLF & _
"+------------------------------------------------------------------------------" & @CRLF
; ###################################################################################
; F U N C T I O N E N / S U B R O U T I N E N
; ###################################################################################
; ###################################################################################
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt
Func _ANSI2OEM($text)
$text = DllCall('user32.dll', 'Int', 'CharToOem', 'str', $text, 'str', '')
Return $text[2]
;Return $text
EndFunc ;==>_ANSI2OEM
; ###################################################################################
; Hilfsroutine die den Hilfetext ausgibt
Func _HilfeAusgeben()
ConsoleWrite(_ANSI2OEM($s_Header))
ConsoleWrite(_ANSI2OEM($s_HilfeText))
EndFunc ;==>_HilfeAusgeben
; ###################################################################################
; Soll ganz toll ganze Verzeichnisbäume abgrasen können
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix (bugfix@autoit.de)
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Func _VerboseConsoleWrite($s_VerboseText)
If $b_Verbose = True Then
ConsoleWrite(_ANSI2OEM($s_VerboseText) & @CRLF)
EndIf
EndFunc
; ###################################################################################
; H I L F E
; ###################################################################################
;testen ob wir überhaupt mit einem Parameter gestartet wurden - sonst Hilfe ausgeben
;~ If $CmdLine[0] = 0 Then
;~ _HilfeAusgeben()
;~ Exit 0
;~ EndIf
;testen ob der Parameter 1 ist auf "/?" testen und ebenfalls Hilfe ausgeben
If $CmdLine[0] = 0 Then
_HilfeAusgeben()
Exit 0
EndIf
If $CmdLine[1] = "/?" Then
_HilfeAusgeben()
Exit 0
EndIf
If StringInStr($CmdLineRaw, "--verbose") > 0 Then
$b_Verbose = True
ConsoleWrite("Aufruf von " & @ScriptName & " mit folgenden Parametern:" & @CRLF)
For $i = 1 To $CmdLine[0]
ConsoleWrite("Parameter " & $i & ": " & $CmdLine[$i] & @CRLF)
Next
EndIf
; Restliche Parameter auswerten und Variablen füllen ########################################################
; ##############################################################################################
If $CmdLine[1] = "FileCount" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
_VerboseConsoleWrite("Hole Zeiger auf Verzeichnis")
$h_suchhandle = FileFindFirstFile($s_Path & "*")
_VerboseConsoleWrite("Zähle Dateien")
While @error <> 1
$i_Zaehler = $i_Zaehler + 1
If $b_Verbose = True Then
ConsoleWrite(".")
EndIf
$s_temp = FileFindNextFile($h_suchhandle)
WEnd
If $i_Zaehler > 0 Then
$i_Zaehler = $i_Zaehler - 1
EndIf
_VerboseConsoleWrite(" fertig!")
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCountR" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$a_dateiliste = _GetFilesFolder_Rekursiv($s_Path)
ConsoleWrite($a_dateiliste[0] & @CRLF)
Exit $a_dateiliste[0]
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCountR2" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$a_dateiliste = _GetFilesFolder_Rekursiv($s_Path, "*", 0)
ConsoleWrite($a_dateiliste[0] & @CRLF)
Exit $a_dateiliste[0]
Else
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileFindCount" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = StringReplace($CmdLine[2],"%","*") ; alle % durch * da Zabbix den * nicht mag
$s_Path = StringReplace($s_Path, "/", "\")
_VerboseConsoleWrite("Übergebender Suchparameter ist : " & $CmdLine[2])
_VerboseConsoleWrite("Umgewandelter Suchparamater ist : " & $s_Path)
$i_Zaehler = 0
$h_suchhandle = FileFindFirstFile($s_Path)
While @error <> 1
$i_Zaehler = $i_Zaehler + 1
$s_temp = FileFindNextFile($h_suchhandle)
If $s_temp <> "" Then
_VerboseConsoleWrite($i_Zaehler & ": Datei gefunden : '" & $s_temp & "'")
EndIf
WEnd
If $i_Zaehler > 0 Then
$i_Zaehler = $i_Zaehler - 1
EndIf
If $i_Zaehler = -1 Then
$i_Zaehler = 0
EndIf
ConsoleWrite($i_Zaehler & @CRLF)
Exit $i_Zaehler
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileCreateAge" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$a_dateizeit = FileGetTime($CmdLine[2],1) ; 1 = erstellt
; Das Array ist ein 1-dimensionales Array, das sechs Elemente enthält:
; $array[0] = Jahr (vierstellig)
; $array[1] = Monat (Bereich: 01 - 12)
; $array[2] = Tag (Bereich: 01 - 31)
; array[3] = Stunden (Bereich: 00 - 23)
; $array[4] = Minuten (Bereich: 00 - 59)
; $array[5] = Sekunden (Bereich: 00 - 59)
; Es ist zu beachten, dass die Rückgabewerte bei Bedarf mit Nullen aufgefüllt sind.
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
; $sType Auswählen, wie die Differenz zurückgegeben werden soll:
; D - in Tagen
; M - in Monaten
; Y - in Jahren
; w - in Wochen
; h - in Stunden
; n - in Minuten
; s - in Sekunden
ConsoleWrite($i_Sekunden & @CRLF)
Exit $i_Sekunden
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileModifyAge" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$a_dateizeit = FileGetTime($CmdLine[2],0) ; 0 = geändert
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
; $sType Auswählen, wie die Differenz zurückgegeben werden soll:
; D - in Tagen
; M - in Monaten
; Y - in Jahren
; w - in Wochen
; h - in Stunden
; n - in Minuten
; s - in Sekunden
ConsoleWrite($i_Sekunden & @CRLF)
Exit $i_Sekunden
EndIf
; ##############################################################################################
If $CmdLine[1] = "GetAttrib" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = StringReplace($CmdLine[2], "/", "\")
_VerboseConsoleWrite("Übergebende Datei/Ordner ist : " & $CmdLine[2])
_VerboseConsoleWrite("Umgewandelter Pfad ist : " & $s_Path)
If FileExists($s_Path) = 0 Then
_VerboseConsoleWrite("Datei/Verzeichnis nicht vorhanden!")
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_temp = FileGetAttrib($s_Path)
ConsoleWrite($s_temp & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileGetSize" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$i_Dateigroesse = FileGetSize($CmdLine[2])
ConsoleWrite($i_Dateigroesse & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "FileGetVersion" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_temp = FileGetVersion($CmdLine[2])
ConsoleWrite($s_temp & @CRLF)
Exit
EndIf
; ##############################################################################################
If $CmdLine[1] = "DirGetSize" Then
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
If FileExists($CmdLine[2]) = 0 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$i_Dateigroesse = DirGetSize($CmdLine[2])
ConsoleWrite($i_Dateigroesse & @CRLF)
Exit $i_Dateigroesse
EndIf
; ##############################################################################################
If StringLeft($CmdLine[1], StringLen("FileCountSize=")) = "FileCountSize=" Or StringLeft($CmdLine[1], StringLen("#FileCountSize=")) = "#FileCountSize=" Then
If $CmdLine[0] > 2 Then
$s_Suchmuster = $CmdLine[3]
EndIf
If $s_Suchmuster = "--verbose" Then
$s_Suchmuster = "*"
EndIf
If StringLeft($CmdLine[1], 1) = "#" Then
$i_DateiSuchGroesse = Int(StringReplace($CmdLine[1], "#FileCountSize=", ""))
$b_Inverse = True
If $b_Verbose = True Then
ConsoleWrite("Suche Dateien die kleiner sind als ")
EndIf
Else
$i_DateiSuchGroesse = Int(StringReplace($CmdLine[1], "FileCountSize=", ""))
$b_Inverse = False
If $b_Verbose = True Then
ConsoleWrite(_ANSI2OEM("Suche Dateien die größer sind als "))
EndIf
EndIf
_VerboseConsoleWrite($i_DateiSuchGroesse & " Bytes")
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$h_suchhandle = FileFindFirstFile($s_Path & $s_Suchmuster)
While @error <> 1
$s_temp = FileFindNextFile($h_suchhandle)
If @error = 1 Then
ExitLoop
EndIf
If StringInStr(FileGetAttrib($s_temp), "D") = 0 Then
If $b_Inverse = False Then
If FileGetSize($s_Path & $s_temp) >= $i_DateiSuchGroesse Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " >= " & $i_DateiSuchGroesse)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu klein : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " < " & $i_DateiSuchGroesse)
EndIf
Else
If FileGetSize($s_Path & $s_temp) <= $i_DateiSuchGroesse Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " <= " & $i_DateiSuchGroesse)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu groß : " & $s_temp & " : " & FileGetSize($s_Path & $s_temp) & " < " & $i_DateiSuchGroesse)
EndIf
EndIf
EndIf
WEnd
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!" & @CRLF)
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]) & @CRLF)
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
If StringLeft($CmdLine[1], StringLen("FileCountAge=")) = "FileCountAge=" Or StringLeft($CmdLine[1], StringLen("#FileCountAge=")) = "#FileCountAge=" Then
If $CmdLine[0] > 2 Then
$s_Suchmuster = $CmdLine[3]
EndIf
If $s_Suchmuster = "--verbose" Then
$s_Suchmuster = "*"
EndIf
If StringLeft($CmdLine[1], 1) = "#" Then
$i_DateiSuchAlter = Int(StringReplace($CmdLine[1], "#FileCountAge=", ""))
$b_Inverse = True
Else
$i_DateiSuchAlter = Int(StringReplace($CmdLine[1], "FileCountAge=", ""))
$b_Inverse = False
EndIf
;ConsoleWrite("Dateisuchgroesse = '" & $i_DateiSuchAlter & "'" & @CRLF)
If $CmdLine[0] < 2 Then
ConsoleWrite("-1" & @CRLF)
Exit -1
EndIf
$s_Path = $CmdLine[2]
If StringRight($s_Path,1) <> "\" Then
$s_Path = $s_Path & "\"
EndIf
$i_Zaehler = 0
If StringInStr(FileGetAttrib($CmdLine[2]), "D") > 0 Then
$h_suchhandle = FileFindFirstFile($s_Path & $s_Suchmuster)
While @error <> 1
$s_temp = FileFindNextFile($h_suchhandle)
If @error = 1 Then
ExitLoop
EndIf
If StringInStr(FileGetAttrib($s_temp), "D") = 0 Then
$a_dateizeit = FileGetTime($s_Path & $s_temp, 1) ; 1 = erstellt
; Das Array ist ein 1-dimensionales Array, das sechs Elemente enthält:
; $array[0] = Jahr (vierstellig)
; $array[1] = Monat (Bereich: 01 - 12)
; $array[2] = Tag (Bereich: 01 - 31)
; array[3] = Stunden (Bereich: 00 - 23)
; $array[4] = Minuten (Bereich: 00 - 59)
; $array[5] = Sekunden (Bereich: 00 - 59)
; Es ist zu beachten, dass die Rückgabewerte bei Bedarf mit Nullen aufgefüllt sind.
$i_Sekunden = _DateDiff("s", $a_dateizeit[0] & "/" & $a_dateizeit[1] & "/" & $a_dateizeit[2] & " " & $a_dateizeit[3] & ":" & $a_dateizeit[4] & ":" & $a_dateizeit[5], _NowCalc())
If $b_Inverse = False Then
If $i_Sekunden >= $i_DateiSuchAlter Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & $i_DateiSuchAlter & " <= " & $i_Sekunden)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu neu : " & $s_temp & " : " & $i_DateiSuchAlter & " > " & $i_Sekunden)
EndIf
Else
If $i_Sekunden <= $i_DateiSuchAlter Then
_VerboseConsoleWrite("Treffer : " & $s_temp & " : " & $i_DateiSuchAlter & " <= " & $i_Sekunden)
$i_Zaehler = $i_Zaehler + 1
Else
_VerboseConsoleWrite("zu alt : " & $s_temp & " : " & $i_DateiSuchAlter & " > " & $i_Sekunden)
EndIf
EndIf
EndIf
WEnd
ConsoleWrite($i_Zaehler & @CRLF)
FileClose($h_suchhandle)
Exit $i_Zaehler
Else
_VerboseConsoleWrite($CmdLine[2] & " ist kein Verzeichnis!")
_VerboseConsoleWrite(FileGetAttrib($CmdLine[2]))
ConsoleWrite("-1" & @CRLF)
FileClose($h_suchhandle)
Exit -1
EndIf
EndIf
; ##############################################################################################
;~ Case Else
ConsoleWrite(_ANSI2OEM("Unbekannter Parameter: " & $CmdLine[1] & @CRLF))
Exit 1