fixu
Goto Top

VB Script stürzt nach gewisser Zeit ab (nicht genügend Arbeitsspeicher - fso.CopyFile)

Ich habe unten angehängtes VB Script erstellt. Der Zweck des Scripts ist, die Daten (7 Files, max 20Kb total) alle 60 Sekunden vom Ordner "uno" nach "due" zu kopieren. Jetzt zum Problem: nach ca 1 Tag stürzt das Script ab mit dem Fehler "nicht genügend Arbeitsspeicher: fso.CopyFile". Wenn ich aber im Taskmanager schaue, braucht das Script höchstens zwischen 5-7MB Ram - mehr nicht (der PC ist sonst idle). Wenn ich die Dauer von 60 Sekunden testeshalber auf 1 Millisekunde stelle, dauert es etwa 20 Sekunden bis zum Absturz. Hat jemand eine Idee an was es liegen könnte?

Option Explicit

Dim fso, Source, Target, Frage, Info

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Source = "Z:\VBS\Move\uno\*"
Target = "Z:\VBS\Move\due"

Frage = MsgBox("Abgleich starten?", vbQuestion + vbYesNo, "Abgleich starten?")

If Frage= vbYes Then
Call Copy
else
Call No
End if

Sub Copy
'Info = MsgBox("Daten werden kopiert", vbInformation, "Info")
fso.CopyFile Source, Target
wscript.sleep 60000
Call Copy
End Sub

Sub No
Wscript.Quit
End Sub

Content-ID: 111879

Url: https://administrator.de/contentid/111879

Ausgedruckt am: 23.11.2024 um 17:11 Uhr

AndreasHoster
AndreasHoster 19.03.2009 um 15:52:31 Uhr
Goto Top
Schon mal den Begriff Rekursion gehört?
Du solltest nicht aus der Sub Copy die Sub Copy aufrufen. Zumindestens nicht 24h*60=1440 mal.

Mach eine Schleife im Hauptprogramm und rufe aus der die Sub Copy auf. Dann gibts die Probleme nicht.
Fixu
Fixu 19.03.2009 um 16:57:52 Uhr
Goto Top
Danke, Problem hat sich dadurch gelöst! Mein Code:

Option Explicit

Dim fso, Source, Target, Frage, Info

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Source = "Z:\VBS\Move\uno\*"
Target = "Z:\VBS\Move\due"

Frage = MsgBox("Abgleich starten?", vbQuestion + vbYesNo, "Abgleich starten?")

If Frage= vbYes Then
Call Yes
else
Call No
End if

Sub Yes
Do
Call Copy
loop
End Sub

Sub Copy
'Info = MsgBox("Daten werden kopiert", vbInformation, "Info")
fso.CopyFile Source, Target
wscript.sleep 60000
End Sub

Sub No
Wscript.Quit
End Sub