Skripte unter Windows
MS Windows Script enthält VBScript (eine Visual Basic Script Edition),
JScript (aus einer alten JavaScript-Version von Netscape abgeleitet),
Windows Script Components, WSH (Windows Script Host) und die Windows Script Runtime.
Ich verstehe das so: Die Windows Script Runtime bzw. Engine ist in der Lage
VBScript-, JScript-,
WSH- und Windows Script Components-Skripte abzuarbeiten (zu interpretieren). Neben
JScript- (das ist KEIN! JavaScript) können auch VBScript- und WSH-Skripte
in HTML-Seiten eingebunden werden, laufen aber nur auf MS Windows-Systemen.
Skripte sind in Text- bzw. ASCII-Dateien gespeichert und enthalten keinerlei
Textformatierungen (fett; unterstrichen).
Die Dateierweiterung / -endung lautet '.vbs'.
Richtige Textverarbeitungsprogramme wie MS-Word
sind daher kaum zur Barbeitung von Skripten geeignet.
Wie anfangen?
Vorbereitungen
Zunächst sollte der Windows-Explorer so eingestellt werden, dass
die Dateierweiterungen für alle Dateien angezeigt werden.
Für neue Projekte verwende ich das Verzeichnis c:\1vbs.
Durch die 1 ist das Verzeichnis im Explorer immer weit oben und schnell zu finden.
Auf dem Desktop habe ich drei Verknüpfungen:
- eine verweist direkt auf das Skript c:\1vbs\test.vbs
- die zweite öffnet das Skript mit Notepad notepad c:\1vbs\test.vbs und
- die dritte öffnet das Verzeichnis c:\1vbs.
Da ich grundsätzlich kein Programm im Vollbildmodus geöffnet habe,
sind diese drei Verknüpfungen am linken Desktop-Rand immer erreichbar.
Es reicht also ein Doppelklick, um das Skript zu starten oder um es
bearbeiten zu können. (Alternativ kann man diese Verknüpfungen auch
in der Schnellstartleiste ablegen.)
Ein Skript bearbeiten: Ist das Skript im Explorer markiert (blau unterlegt),
verwende ich meistens die Tastenkombination [Umschalt-F10] - [b]. Mit
[Umschalt-F10] wird das Kontextmenü (des im Explorer markierten Objekts)
geöffnet - [b] wählt den unterstrichenen Buchstaben in
'Bearbeiten'
(unter WinNT) aus. Ist das Skript nicht markiert, klicke ich es mit der rechten
Maus-Taste an und drücke die Taste [b].
Wenn ich Skripte programmiere sind fast immer folgende CHM-Dateien geöffnet:
Microsoft Windows Script-Technologien - Hilfe
script56.chm
(dt.; 1378 KB; aus
scr56de.exe)
The Portable Script Center
scriptcenter.chm
(eng.; 1678KB; aus
script_center_repository.exe)
Falls sich die CHM-Dateien nicht verwenden lassen, gibts
hier Hilfe.
Weitere Downloads von MS:
Microsoft Windows Script Downloads
Weiterhin gibt es im Verzeichnis c:\1vbs zwei Verknüpfungen zur
deutsche MS NewsGroup zu WSH:
- über Google
(zum Suchen) und
- über MS
(zum Fragen und Antworten).
Weitere Foren sind in der Forum-Seite gelistet.
Als Editor verwendete ich lange Zeit Notepad. In den neueren Notepad-Versionen
kann man mit [Strg-G] zu einer Zeile springen, die in einer Fehlermeldung
genannte wurde. Seit 2005 verwende ich privat PSPad und dienstlich UltraEdit
manchmal auch JEdit. Da aber nicht immer ein 'richtiger' Editor installiert ist,
wird man hin und wieder mit Notepad arbeiten müssen.
Und los!
Zu Beginn eines Projekts kopiere ich mir immer ein Skript aus meiner
Skriptsammlung (in das c:\1vbs-Verzeichnis),
das Teile oder ähnliche Aufgaben bereits löst und benenne es in test.vbs um.
(Damit erspare ich mir zumindest die Fehlersuche in den ersten Zeilen.)
Oder ich erstelle eine neue TXT-Datei, die ich dann entsprechend umbenenne.
Alternativ kann man sich auch eine eigene Sammlung von Code-Schnipseln erstellen, wie
es W. Schmelz getan hat:
wschmelz-beispiele.exe
und/oder
wschmelz-grdprobl.txt.
' File: Skriptname.vbs
' Autor: dieseyer@gmx.de
' dieseyer.de
'
' Kurze Skriptbeschreibung
'***************************************************************
Option Explicit
Dim WSHShell, fso, FileIn, FileOut
Dim Datei, Text, Txt, i, arrSort, arrTest(), oArgs
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
File = "test.txt"
Set FileIn = fso.OpenTextFile(File , 1, true)
' Datei zum Lesen öffnen
Do While Not (FileIn.atEndOfStream)
' wenn Datei nicht zu Ende ist, weiter machen
Text = FileIn.Readline, , WScript.ScriptName
' eine Zeile lesen
MsgBox = Text
Loop
Set FileIn = nothing
WScript.Quit
Als nächstes lösche ich die überflüssigen Zeilen.
Dabei prüfe ich, ob das Skript weiterhin fehlerfrei läuft.
Anschließend lösche ich noch die überflüssigen Variablen in den Dim-Zeilen
und füge ein paar MsgBox-Zeilen ein. Die MsgBox-Zeilen informieren
mich dann immer mal wieder über den Stand der Skriptabarbeitung .
Für meine Skripte habe ich mir einen eigenen Versionssyntax zugelegt:
Die ersten beiden Ziffern bezeichnen das Jahr und die Ziffer nach dem Punkt den Monat,
in dem das Skript entstanden bzw. zu letzt verbessert oder korrigiert wurde.
Version v3.2 steht für den 2. Monat im Jahr 2003 -
Version v10.A entstand im Oktober 2010.
Mit Option Explicit ist festgelegt, das nur Variable im Skript benutzt
werden, die mit DIM-Anweisungen deklariert sind. Vertippt man sich
bei der Eingabe von Variablen, wird das mit einer Fehlermeldung angezeigt.
(Würde man versehentlich MsgBox Txet statt MsgBox Text schreiben,
würde ohne Option Explicit eine leere MsgBox erscheinen.)
Für die Aufgaben, die das Skript bisher nicht löst, suche ich in meiner
Skriptsammlung nach entsprechenden Lösungsansätzen, die ich dann in mein
Skript kopiere und anpasse. Das beschreibe ich ausfühlich zu dem Skript
CDdurchsuchen.vbs.
Hilfe!!!
Wenn etwas nicht klappt, findet man in den NewsGroups (NGs) und Foren (Forum)
eigentlich immer Hilfe - siehe in der Forum-Seite.
'Da werden Sie geholfen' geht am schnellsten
in der Microsoft-WSH-NewsGroup (MS-NG). Ein NewsReader ist nicht
erforderlich, da das Web-Interface recht komfortabel ist. Als Neuling sollte man
vor
eigenen Fragen die MS-NG durchsuchen - das geht aber am besten mit Google.
Um etwas zu Lernen, versuche ich das, was andere bereits vollbracht haben, zu
verstehen. Aus diesem Grund habe ich ein paar
Beispiele
und einige
Sub- & Function-Prozeduren
etwas ausführlicher erklärt.
An dieser Stelle möchte ich noch empfehlen, in Skripten
immer
ein paar Erläuterungen einzufügen. Wenn Skripte umfangreicher werden und man
nicht ständig daran herum bastelt, versteht man sie später selbst nicht mehr
und muss sich mühsam einlesen. Dies resultiert im Wesentlichen aus dem geänderten
Programmierstil, den man sich durch Erfahrungen und eigene Weiterentwicklung mit der Zeit
angewöhnt. Es ist erschreckend, wie stümperhaft alter, eigener Programmcode manchmal ist.
Zu einigen Skripten sind Funktionsbeschreibungen verfügbar:
Datei-Verzeichnis-Liste.vbs
deltree.vbs
CDdurchsuchen.vbs
CD-Menu.vbs
Häufige Fehler
Leerzeichen im Dateinamen
Befindet sich im Dateinamen mit kompletten Pfad oder im Verzeichnisnamen
ein Leerzeichen, muss man statt
Var = "c:\Eigene Dateien\nur ein bsp.txt"
Var = """c:\Eigene Dateien\nur ein bsp.txt"""
schreiben. Das erste " (Anführungszeichen) leitet eine Zeichenkette (String) ein
und die folgenden beiden " fügen ein! " in die Zeichenkette ein. Diese mehrfachen
Anführungszeichen sind z.B. bei WSHShell.Run erforderlich - nicht aber, wenn wenn
die Zeichenkette nur innerhalb des Skriptes mit dem FileSystemObject verwendet wird.
Schleifen nicht abgeschlossen
For .. Next
Do .. Loop
If .. End If
Fehlt der Abschluss in Schleifen, wird in der Fehlermeldung als fehlerhafte Zeile
die letzte Zeile im Skript angegeben.
weitere Fehler
. . . fallen mir gerade nicht ein.
Ich könnte jetzt fragen, ob jemand andere Fehler für typisch bzw. häufig hält,
aber: Wer macht schon Fehler?! ;-))
P.S. Wenn das jemand als Aufforderung verstanden hat, mir solche
typischen bzw. häufigen Fehler zu schicken,
dann hat er mich richtig verstanden.
↑ Zum Seitenanfang ↑