Startseite

© Juni 2015 • by dieseyer • all rights reserved • www.dieseyer.de

Du bist hier: dieseyer.de > Links & Lernen > Algemeines
Allgemeines
! ! !   Stand 2010   ! ! !

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.
Wie es geht hat MS hier hier beschrieben: Ein- und Ausblenden von Dateinamenerweiterungen
Dadurch ist erkennbar, welche Dateinamenerweiterung eine Datei hat. Ist Dateinamenerweiterung ausgeblendet,
wird die Datei   meine.vbs.txt   als   meine.vbs   angezeigt.

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.

↑ Zum Seitenanfang ↑

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, erscheint mit Option Explicit eine Fehlermeldung, ohne eine leere MsgBox.)

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.

↑ Zum Seitenanfang ↑


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 VBS-Skripte   •   Erklärungen
und einige VBS-Skripte   •   Sub/Function 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


↑ Zum Seitenanfang ↑

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 ↑