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 Tetverarbeitungsprogramme 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:\#vbs. Durch das # 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:\#vbs\test.vbs, die zweite öffnet das Skript mit Notepad notepad c:\#vbs\test.vbs und die dritte öffnet das Verzeichnis c:\#vbs. 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.
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, ist immer die Microsoft Windows Script-Technologien - Hilfe (aus scd56de.exe) geöffnet: Windows Script 5.6 Hilfe; dt.; script56.chm; 1378 KB
Die von mir gesammelten Skripte befinden sich in zwei Verzeichnissen: eins enthält meine eigenen Skripte (die ich programmiert habe und auch verstehe) und das andere ist mit interessanten Skripten von anderen Leuten gefüllt. Beide Verzeichnisse erreiche ich ebenfals über Verknüpfungen in c:\#vbs.
Weiterhin gibt es im Verzeichnis c:\#vbs zwei Verknüpfungen zur deutsche NewsGroup bei MS zu WSH über Google (zum Suchen) und über MS (zum Fragen).
Als Editor verwende ich Notepad. In den neueren Notepad-Versionen kann man mit [Strg-G] zu einer Zeile springen, die in einer Fehlermeldung genannte wurde.
Und los!
Zu Beginn eines Projekts kopiere ich mir immer ein Skript aus meiner Skriptsammlung (in das c:\#vbs-Verzeichnis), das Teile oder ähnliche Aufgaben bereits löst und benenne es um. (Damit erspare ich mir zumindest die Fehlersuche in den ersten Zeilen.) Oder ich erstelle eine neut TXT-Datei, die ich dann entsprechend um benenne.
'v3.1***********************************************************
' 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 .
' 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
Für meine Skripte habe ich mir einen eigenen Versionssyntax zugelegt: Die erste Zahl bezeichnet das Jahr und das zweite Zeichen den Monat, in dem das Skript entstanden ist. Version v3.2 steht für den 2. Monat im Jahr 2003 - Version v2.A entstand im Oktober 2002.
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.
'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.
Auch die Verknüpfungen zu diesen beiden Sites im Internet befinden sich in meinem c:\#vbs-Verzeichnis:
Die deutsche NewsGroup bei MS zu WSH über Google oder über MS.
Weitere Foren sind in der Forum-Seite gelistet.
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.
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\bsp.txt"
Var = """c:\Eigene Dateien\bsp.txt"""
schreiben. Das erste " (Anführungszeichen) leitet eine Zeichenkette (String) ein
und die folgenden beiden " fügen ein! " in die Zeichenkette ein.
Schleifen nicht abgeschlossen For .. Next Do .. Loop If .. End If
Fehlt der Abschluss in Schleifen, wird in der Fehlermeldung als fehlerhafte Zeile die letzte Skriptzeile 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.
