[VBS] Wil niet loggen naar bestand

Pagina: 1
Acties:

  • Crusader
  • Registratie: Januari 2000
  • Laatst online: 16:55

Crusader

Arc Nature

Topicstarter
Allereerst: ik ben geen held in VBS. Het probleempje wat ik nu heb vind ik erg vreemd en ik kom er niet uit. Ik hoop dat iemand ziet wat hier misgaat.

In regel 24 wordt een logbestand aangevuld. Dat gaat prima zolang ik regel 23 deactiveer. Maar zodra de Delete method wordt aangeroepen, wil ie niet meer loggen in regel 24. Ik krijg dan een "Path not found" foutmelding van cscript.exe.
Waarom kan ie dan ineens de logfile niet meer vinden? De Delete method doe ik via WMI en de logfile aanvullen doe ik via het FileSystemObject. Twee verschillende wegen als je het mij vraagt.
Doel van dit script is het verwijderen van subdirectories die ouder zijn dan drie maanden.

PS. Ik heb de declaratie van variabelen even weggelaten uit deze code hier op GoT, om de leesbaarheid iets te vergroten.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
strLogFile = "K:\Directorynaam\Cleanup.log"

strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set fldFolder = objFSO.GetFolder("K:\Directorynaam")
Set colSubFolders = fldFolder.SubFolders
If Not objFSO.FileExists(strLogFile) Then
    Set objLogFile = objFSO.CreateTextFile(strLogFile)
Else
    Set objLogFile = objFSO.OpenTextFile(strLogFile, 8)
End If

For Each objSubfolder In colSubFolders
    strToday = Now
    strCreateDate = objSubFolder.DateCreated
    strDiff = DateDiff("m", strCreateDate, strToday)
    If strDiff >= 3 Then
        strQuery = "SELECT * FROM Win32_Directory WHERE Name = 'K:\\Directorynaam\\" & objSubFolder.Name & "'"
        Set colWMISubFolder = objWMIService.ExecQuery (strQuery)
        For Each objWMISubFolder In colWMISubFolder
            WScript.Echo objWMISubFolder.Name
            objWMISubFolder.Delete
            objLogFile.WriteLine("Op " & Date & " is verwijderd: " & objSubFolder.Name)
        Next
    End If
Next

[ Voor 6% gewijzigd door Crusader op 14-09-2006 08:14 ]

If it ain't broken, play with it till it breaks.


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Waarschijnlijk zal de collectie 'live' zijn. Dus als je een element verwijderd van het filesystem, dan kan je niet meer de eigenschappen opvragen.
Als dat zo is, dan is de oplossing eenvoudig, namelijk:
code:
1
2
3
strDeletedFolder = objSubFolder.Name
objWMISubFolder.Delete
objLogFile.WriteLine("Op " & Date & " is verwijderd: " & strDeletedFolder)

[ Voor 4% gewijzigd door Annie op 14-09-2006 08:44 ]

Today's subliminal thought is:


  • Crusader
  • Registratie: Januari 2000
  • Laatst online: 16:55

Crusader

Arc Nature

Topicstarter
Bedankt Annie, het werkt!
Achteraf inderdaad logisch, ik probeerde de naam op te vragen van een verwijderde directory, terwijl ik in de veronderstelling was dat ie het over de logfile had...

edit: zat eerst verkeerde file te editten waardoor ik dacht dat het nog niet werkte |:(

[ Voor 144% gewijzigd door Crusader op 14-09-2006 09:20 ]

If it ain't broken, play with it till it breaks.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Waar hoort mijn topic? Stickies zijn er niet voor niets. ;)

PRG>>WOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Crusader
  • Registratie: Januari 2000
  • Laatst online: 16:55

Crusader

Arc Nature

Topicstarter
Ik twijfelde nog. Vond het geen windows client aangelegenheid, omdat ik dit programmeer op een server :).
Maar je hebt gelijk...
VBScript- en Batch-vragen horen ook in WOS.

[ Voor 26% gewijzigd door Crusader op 14-09-2006 11:47 ]

If it ain't broken, play with it till it breaks.