Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Allgemein


Alles zum Thema Windows Clients für den Desktop: Windows 95 / 98 / NT / 2000 / XP / Vista / Win 7 — Q & A zu den Windows Client Versionen sowie Windows Media Center / Windows Home Server


Antwort
     
Themen-Optionen
Alt 18.08.2006, 13:13   #1
Member
 
Benutzerbild von W2K-Networker
 
Offline
Registriert seit: 03-2004
Ort: Berlin
Beiträge: 141
WSH-Scripting

Hallo Leute,

ich habe mir den Systemscripter V6 von scriptinternals heruntergeladen, um damit ein Script zu erstellen.
Das Script stammt aus dem Buch Windows XP Professional - Das Handbuch.

Nun kommt das Problem:

Das Skript funktioniert nicht. Es kommt die Fehlermeldung:

Error occured in line 18 near column 3:
Laufzeitfehler in Microsoft VBScript: Objekt erforderlich: 'drive'
Tipp: Click on the warning sign in the indicator margin to jump to the code that caused the error.

Hier das dazugehörige Skript:

antwort = MsgBox("Wollen Sie defragmentieren?", _
vbYesNo + vbQuestion + vbSystemModal)
If antwort = vbYes Then
Set wshshell = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set drives = fs.Drives
If drive.drivetype = 2 Then
cmd = "defrag" & drive.driveletter & ":" & "-f -v"
res = wshshell.Run(cmd, 1, True)
End If

End If

Ich hoffe es kann mir hier jemand helfen.
Ziel des Skripts ist es lediglich ein Defrag der Platten bei der Abmeldung durchzuführen. Also wenn es noch alternativen Ideen gibt, immer her damit.

Vielen Dank und ein schönes WE.

Signatur
Windows-Netzwerker

Es ist nicht immer alles so wie es scheint.

    Mit Zitat antworten
Alt 18.08.2006, 14:47   #2
Senior Member
 
Benutzerbild von Schluml
 
Offline
Registriert seit: 11-2004
Ort: Dresden
Beiträge: 444
Set drives = fs.Drives
If drive.drivetype = 2 Then
cmd = "defrag" & drive.driveletter & ":" & "-f -v"
soll sicher
Code:
If drives.drivetype = 2 Then
cmd = "defrag" & drives.driveletter & ":" & "-f -v"
heißen

zumindest sagt mir das die Fehlermeldung...

Signatur
There are 10 types of people those who understand binary and those who dont ...

Gruß Björn

    Mit Zitat antworten
Alt 18.08.2006, 14:57   #3
Board Veteran
 
Offline
Registriert seit: 05-2006
Beiträge: 2.054
Thema

Zitat von W2K-Networker

antwort = MsgBox("Wollen Sie defragmentieren?", _
vbYesNo + vbQuestion + vbSystemModal)
If antwort = vbYes Then
Set wshshell = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set drives = fs.Drives
If drive.drivetype = 2 Then
cmd = "defrag" & drive.driveletter & ":" & "-f -v"
res = wshshell.Run(cmd, 1, True)
End If

End If

Hi,

das kann so nicht funktionieren. Du definierst die Variable drives als fs.drives.

In der nächsten Zeile verwendest du dann drive.drivetype. Du hast aber drive nirgends definiert. Ich nehme an, dass du durch alle Laufwerke gehen willst. In dem Fall fehlt ein for each.
Mit for each kannst du alle Mitglieder einer Collection nacheinander anfassen. Das ist besser als ein normales for next, weil du für die for each keine Anzahl der Elemente wissen musst.
Die Collection wäre in dem Fall drives, das einzelne Element drive, also:


Code:
...

Set fs = CreateObject("Scripting.FileSystemObject")
Set drives = fs.Drives

for each drive in drives

   If drive.drivetype = 2 Then
      cmd = "defrag" & drive.driveletter & ":" & "-f -v"
      res = wshshell.Run(cmd, 1, True)
   End If

next
Ob die cmd so stimmt, hab ich jetzt nicht ausprobiert, du kannst dich aber noch mal melden, wenns Fragen gibt.
Einfacheres Beispiel, das auf das set drives verzichtet und die Collection verdeutlicht:

Code:
Set fs =CreateObject("Scripting.FileSystemObject")
for each drive in fs.drives
   wscript.echo objdrive.driveletter
next
Gruß

woiza
    Mit Zitat antworten
Alt 18.08.2006, 14:58   #4
Board Veteran
 
Offline
Registriert seit: 05-2006
Beiträge: 2.054
Zitat von Schluml
soll sicher
Code:
If drives.drivetype = 2 Then
cmd = "defrag" & drives.driveletter & ":" & "-f -v"
heißen

zumindest sagt mir das die Fehlermeldung...
Nö, das funktioniert nicht, weil drives eine Collection aller Laufwerke und nicht ein spezielles Laufwek ist. Somit hat drives auch keinen driveletter

Gruß

woiza
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
VB Scripting ENC Windows Forum — Scripting 1 24.06.2009 23:25
ISA - 2k4/6 Scripting goedi Windows Forum — Security 3 11.02.2009 19:12
Bat Scripting... mr.toby Windows Forum — Allgemein 15 17.01.2007 08:11
Scripting tha_sun Windows Forum — Allgemein 2 21.01.2005 17:45
70-290? Scripting? MacBoon MS Zertifizierungen — Prüfungen 5 29.06.2004 22:25


Alle Zeitangaben in MEZ/CET. Es ist jetzt 11:41 Uhr. Seite generiert in 0,033 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang