Hallo Gemeinde
Ich habe vor für einen Bekannten ein Script zu schreiben welches alle Dateien (ausser die C:\ Platte) in eine Datei schreibt, und auch in eine weitere Datei zu erstellen in der stehen soll, wie es mit den verschiedenen Platten also besser gesagt deren Freien / Vollen Speicherplatz aussieht.
Das ganze soll dann per Client abgefragt werden können.
Jedoch bin ich scheinbar ein wenig zu beschränkt um schon mit dem eigentlich einfachsten Punkt dieser Sache anzufangen nähmlich dem auflisten der Verzeichnisinhalte.
Mein erster Ansatz war eigentlich filefindfirstfile und filefindnextfile jedoch zeigt er mir nur die dateien des direkten verzeichnisses an, nicht jedoch die unterverzeichnisse / files.
Vielleicht hatte ja schon mal jemand ähnliches vor (zumindest was die auflistungen anbelangt) und kann mir einen geeigneten Ansatz liefern... ich bin da gerade irgendwie am verzweifeln.
MfG Eistee
Das wäre mein bisheriger ansatz allerdings wird beim relevanten Array nur 0 zurückgegeben...
Spoiler anzeigen
;Von Kenngott Marco (Eistee, AsusExcite)
;E-Mail : [email='marco.kenngott@live.de'][/email]
;
;
;
Global $i
Global $var
$var = DriveGetDrive( "fixed" )
If NOT @error Then
MsgBox(4096,"", "Es wurden " & $var[0] - 1& " Laufwerke gefunden")
For $i = 2 to $var[0]
MsgBox(1,"Laufwerke ausser C:\ Nr." & $i, $var[$i])
Next
EndIf
$test1 = _RecursiveFileListToArray($var[2]& "\", "*.*")
[/autoit] [autoit][/autoit] [autoit]MsgBox(0,"test", $test1[0])
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
; und: AspirinJunkie (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)
Local $hSearch, $sFile, $sReturn = '', $aD
Local Static $hDll
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
If $fOpenDLL Then $hDll = DllOpen('kernel32.dll')
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
$aD = DllCall($hDll, 'dword', 'GetFileAttributesW', 'wstr', $sPath & $sFile)
If @error Or BitAND($aD[0], 0x400) Then ContinueLoop
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $fRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, True, $sDelim, False)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $fOpenDLL Then DllClose($hDll)
If $iFormat And $sReturn = '' Then Return StringSplit($sReturn, '', $iFormat)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc
hmm... hatte grade die Idee das ich evtl. das Array falsch auslese aber so:
Spoiler anzeigen
;Von Kenngott Marco (Eistee, AsusExcite)
;E-Mail : [email='marco.kenngott@live.de'][/email]
;
;
;
#include <Array.au3>
Global $i
Global $var
$var = DriveGetDrive( "fixed" )
If NOT @error Then
MsgBox(4096,"", "Es wurden " & $var[0] - 1& " Laufwerke gefunden")
For $i = 2 to $var[0]
MsgBox(1,"Laufwerke ausser C:\ Nr." & $i, $var[$i])
Next
EndIf
$test1 = _RecursiveFileListToArray($var[1]& "\", "*.*")
$test2 = _ArrayDisplay($test1)
MsgBox(0,"test", $test2[1])
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
; und: AspirinJunkie (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)
Local $hSearch, $sFile, $sReturn = '', $aD
Local Static $hDll
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
If $fOpenDLL Then $hDll = DllOpen('kernel32.dll')
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
$aD = DllCall($hDll, 'dword', 'GetFileAttributesW', 'wstr', $sPath & $sFile)
If @error Or BitAND($aD[0], 0x400) Then ContinueLoop
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $fRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, True, $sDelim, False)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $fOpenDLL Then DllClose($hDll)
If $iFormat And $sReturn = '' Then Return StringSplit($sReturn, '', $iFormat)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc
funktioniert es ebenfalls nicht ich denke ich mache irgendwas falsch... und komm einfach nicht dahinter...