Hi,
ich hab ein Scritp erstellt, welches mir die Dateien von einem bestimmten Ordner auflistet.
Dies funktioniert soweit.
Wenn allerdings ein leerer Ordner existiert, kommt folgende Fehlermeldung
V:\_AutoIt\Versuche aktuell\mit Anzeige kopieren6 kurz.au3 (108) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
_ArrayInsert($FileList, $j + $i, $tmpdir & $tmp[$j])
_ArrayInsert($FileList, $j + $i, $tmpdir & ^ ERROR
Spoiler anzeigen
#include<Date.au3>
#include<Array.au3>
#include<File.au3>
#include<_ArrayDblDel.au3>
;Nummer des ersten zu kopierenden Ordners
$start = 0
;Nummer des letzten zu kopierenden Ordners
$ende = 0
;Nummer des letzten zu überspringenden Ordners
$ende2 = 0
;~ Dim $dir[$ende+1]
Dim $ordner[$ende+1]
Dim $ausschliessen[$ende2+1]
Dim $array_gesamt_liste, $anzahl, $anzahl_array, $array_gesamt, $anzahl_array2, $array_gesamt2, $array_gesamt_ok2, $anzahl2, $anzahl_gesamt, $merken_alt, $ziel, $ordner_Dateiname, $quelle, $zielordner, $dateiname
Dim $Entscheidung
Dim $Quell_Pf_[$ende+1][2] ; [n][0] = Pfad; [n][1] = gerundete Größe
Dim $goend = 0
;Datumsoptionen
$iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
$sNewDate = _DateAdd('d', 0, _NowCalcDate())
$sNewDate = StringReplace($sNewDate, "/", ".")
;~ ;Quell-Laufwerk
$Quell_LW = "D:\"
;~ ;Quell-Ordner (ohne Laufwerksbuchstabe)
$ordner[0] = "Video"
;~ ;Quell-Ordner zusammengesetzt
$Quell_Pf_[0][0] = $Quell_LW & $ordner[0] & "\"
;~ ;Ziel-Laufwerk
$Ziel_LW = "C:\"
$Ziel_Pf = $Ziel_LW & "Sicherung Internet\" & $sNewDate & "\"
;folgende Ordner bei der Sicherung ausschließen
$ausschliessen[0] = "D:\alt"
_gesamt_array_erstellen()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];***********************************************************************
; Funktion komplettes Array mit allen zu kopierenden Dateien erstellen *
;***********************************************************************
Func _gesamt_array_erstellen()
;~ _ArrayDisplay($array_gesamt_liste)
;leeres Array erstellen
$array_gesamt = _ArrayCreate("")
;Dateien zum kopieren zusammentragen
For $q = $start to $ende
$anzahl = DirGetSize($Quell_Pf_[$q][0], 1)
$anzahl_array = $anzahl[1]
$ordner_aktuell = $Quell_Pf_[$q][0]
_makecopylist($ordner_aktuell)
$anzahl_gesamt += $anzahl_array
;die Dateien jedes zu kopierenden Ordners dem Gesamt-Array hinzufügen
For $h = 0 to UBound($array_gesamt_liste)-1
_ArrayAdd($array_gesamt, $array_gesamt_liste[$h])
Next
Next
[/autoit] [autoit][/autoit] [autoit];Die erste (leere) Linie des Gesamt-Array löschen
_ArrayDelete($array_gesamt, 0)
_ArrayDisplay($array_gesamt)
EndFunc ;==>_gesamt_array_erstellen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];***********************************************************************
; Funktion einzelne Arrays mit allen zu kopierenden Dateien erstellen *
;***********************************************************************
;Funktion zum zusammentragen der Dateien
Func _makecopylist($dir)
$FileList = _FileListToArray($dir, "*", 0)
If (Not IsArray($FileList)) And (@error = 1) Then SetError(-1)
_ArrayDelete($FileList,0)
$i = 0
While ($i < UBound($FileList))
If (FileGetAttrib($dir & '\' & $FileList[$i]) = "D") Then
$tmp = _makecopylist($dir & '\' & $FileList[$i])
$tmpdir = $FileList[$i] & '\'
_ArrayDelete($FileList, $i)
For $j = 0 To UBound($tmp) -1
_ArrayInsert($FileList, $j + $i, $tmpdir & $tmp[$j])
Next
$i = $i + UBound($tmp) - 1
EndIf
$i=$i+1
WEnd
_ArrayDblDel($FileList)
If $anzahl_array = UBound($FileList) Then
$array_gesamt_liste = _ArrayCreate("")
For $z = 0 to UBound($FileList)-1
_ArrayInsert($array_gesamt_liste, $z, $dir & $FileList[$z])
Next
_ArrayDelete($array_gesamt_liste, UBound($FileList))
;~ _ArrayDisplay($array_gesamt_liste)
Else
Return $FileList
EndIf
EndFunc ;==>_makecopylist