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-Key: 111879

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

Printed on: April 19, 2024 at 05:04 o'clock

Member: AndreasHoster
AndreasHoster Mar 19, 2009 at 14:52:31 (UTC)
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.
Member: Fixu
Fixu Mar 19, 2009 at 15:57:52 (UTC)
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