Guten Abend zusammen,
ich habe da mal eine Frage an das Forum hier.
Ich habe seit dem Umstieg auf Windows 8 bei meinem Backup Script den Effekt, dass eine Fehlermeldung zum Ende des Scripts auftaucht.
Vorgeschichte:
Das Script habe ich unter Win7 selbst 'gebaut'. Im Groben passiert folgfendes:
Diverse Checks auf offene Dateine werden durchgefüht und ggf. geschlossen und wegkopiert.
Ein Netzwerklaufwerk wird dismountet und letztlich ein Backup mittels eingebundenem ROBOCOPY auf einen externen Datenträger ausgeführt.
Die letzte Aktion besteht darin, das robocopy log teilweise auszulesen und als Zusammenfassung in einer Messagebox anzuzeigen.
(Anm: Auf der alten Win 7 32Bit Maschine funktioniert alles einwandfrei)
Problem:
Bei der Anzeige bzw. dem Berechnen der Messagebox kommt es jetzt zu der folgenden Fehlermeldung:
Line 5762 (File "D:\.....")
Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Weiss ggf. jemand etwas dazu / kann es sein, dass eine Definition oder Parameter w/WIN8 64 Bit hinzugefügt werden muss ?
Vielen Dank schon einmal im voraus
mfg
ugt100
Zur Sicherheit hier der Script Snip dazu...
Spoiler anzeigen
x
$file = FileOpen($cdeLogFile, 0)
;Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Datei kann nicht geöffnet werden.")
Exit
EndIf
; File Actions
; count lines of log and calculate 10 lines up
; read 6th line for date (start) purposes + trim, read last line for date (end) purposes + trim
; calculate duration of the Script (Func _YourTimeStamp)
$cdeCountLines = _FileCountLines($cdeLogFile)
$cdeLast10Lines = $cdeCountLines - 10
$cdeDateStart = FileReadLine($file,6)
$cdeDateStart =StringMid($cdeDateStart, 13, 25)
$cdeDateEnd = FileReadLine($file,-1)
$cdeDateEnd = StringMid($cdeDateEnd, 12, 25)
$cdeRunTime = "Duration : " & _DateDiff( 's',_YourTimeStamp($cdeDateStart), _YourTimeStamp($cdeDateEnd)) & " [sec]"
FileClose($file)
;Array Actions (read log to array, create new array containing the last 11 lines)
Local $aNewRecords[1]
;Delete Temp-File
FileDelete(@Scriptdir & "\temp.txt")
;Open RobocopyLog and create Temp-File
If Not _FileReadToArray($cdeLogFile, $aRecords) Then
MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei in das Array Fehler:" & @error)
Exit
EndIf
For $x = $cdeLast10Lines To $aRecords[0]
_ArrayAdd($aNewRecords,StringStripWS($aRecords[$x], 3))
_FileWriteFromArray(@Scriptdir & "\temp.txt",$aNewRecords)
Next
;Adjust the file format
_FileWriteToLine(@Scriptdir & "\temp.txt", 2," Total Copied Skipped Mismatch FAILED Extras", 1)
FileClose(@Scriptdir & "\temp.txt")
$cdeLine1 = FileReadLine(@Scriptdir & "\temp.txt", 1)
$cdeLine2 = FileReadLine(@Scriptdir & "\temp.txt", 2)
$cdeLine3 = FileReadLine(@Scriptdir & "\temp.txt", 3)
$cdeLine3b = StringStripWS($cdeLine3, 4)
$cdeLine3b = StringReplace($cdeLine3b, "Dirs : " & @TAB, "Dirs : ")
$cdeLine3b = StringReplace($cdeLine3b, " ", @TAB)
$cdeLine4 = FileReadLine(@Scriptdir & "\temp.txt", 4)
$cdeLine4b = StringStripWS($cdeLine4, 4)
$cdeLine4b = StringReplace($cdeLine4b, " ", @TAB)
$cdeLine5 = FileReadLine(@Scriptdir & "\temp.txt", 5)
$cdeLine5b = StringRegExpReplace($cdeLine5, "[m]", "")
$cdeLine5b = StringRegExpReplace($cdeLine5b, "[g]", "")
$cdeLine5b = StringRegExpReplace($cdeLine5b, "[k]", "")
$cdeLine5b = StringStripWS($cdeLine5b, 4)
$cdeLine5b = StringReplace($cdeLine5b, " ", @TAB)
$cdeLine9 = FileReadLine(@Scriptdir & "\temp.txt", 9)
$cdeLine9b = StringStripWS($cdeLine9, 4)
$cdeLine9b = StringReplace($cdeLine9b, "Speed :", "Speed :" )
$cdeLine9b = StringReplace($cdeLine9b, ":", ": " )
$cdeLine10 = FileReadLine(@Scriptdir & "\temp.txt", 10) & @CRLF
$cdeLine10b = StringStripWS($cdeLine10, 4)
$cdeLine10b = StringReplace($cdeLine10b, "Speed :", "Speed : " & @TAB)
$cdeLine11 = "Started : " & $cdeDateStart
$cdeLine12 = "Ended : " & $cdeDateEnd
$cdeLine13 = $cdeRunTime
MsgBox(0,"Robocopy Log-Summary - " & $cdedateStart, $cdeLine2 & @CRLF & $cdeLine3b & @CRLF & $cdeLine4b & _
@CRLF & $cdeLine5b & $cdeLine8 & @CRLF & $cdeLine9b & @CRLF & $cdeLine10b & @CRLF & $cdeLine11 &@CRLF & $cdeLine12 & @CRLF & $cdeLine13)
; $cdeLine1 & @CRLF & & @CRLF & $cdeLine6 & @CRLF & $cdeLine7
FileDelete(@Scriptdir & "\temp.txt")
WinActivate("Robocopy Log-Summary -", "")
Exit
;Convert Date/Time of Start and End of Script
Func _YourTimeStamp($sTimeStamp)
Local $aTimeStamp = StringSplit($sTimeStamp, " :", 2)
Local $sMon = ""
Switch $aTimeStamp[1]
Case "Jan"
$sMon = "01"
Case "Feb"
$sMon = "02"
Case "Mar"
$sMon = "03"
Case "Apr"
$sMon = "04"
Case "May"
$sMon = "05"
Case "Jun"
$sMon = "06"
Case "Jul"
$sMon = "07"
Case "Aug"
$sMon = "08"
Case "Sep"
$sMon = "09"
Case "Oct"
$sMon = "10"
Case "Nov"
$sMon = "11"
Case "Dec"
$sMon = "12"
EndSwitch
Return StringFormat("%s/%s/%s %s:%s:%s", $aTimeStamp[6], $sMon, $aTimeStamp[2], $aTimeStamp[3], $aTimeStamp[4], $aTimeStamp[5])
EndFunc ;~ ==>_YourTimeStamp4