. . . andere Bilder meiner Tochter.
  Home Impressum Forum Feedback © 2010 by dieseyer • all rights reserved • www.dieseyer.de     VBS - Skripte   •   Sammlung April 2011 Info Sammlung Sub/Function Erklärungen
Die WSH - Skripte • Sammlung zum Download auf der DownLoad-Seite. Die Skripte fortlaufend alle.html. Siehe auch im Portable  Script Center v3.0 bei TechNet.MS, die The TechNet Script Center Gallery! und hier die HTA-Beispiele bzw. die WMI-Seite.)

Neu in der Version v11.4 vom 30.04.2011:

QuellCode> emailsenden_cmd.vbs
ermöglicht aus Batch-Programmen (CMD oder BAT) heraus eine Email zu versenden. Dazu muss für die CMD das VBS erreichbar sein. Als Parameter wird nur der Mitteilungstext 'erfasst'. Die Email-Adressen und der SMTP-Server sind im VBS fest eingetragen (HardCoded).
Das Skript verwendet die Prozedur aus
QuellCode> emailsenden.vbs
 Sub EmailSenden( SMTPServer, EmailVon, EmailAn,
 AnmName, AnmPassw, Betreff, Text, Anhang ) 

ermöglicht das Versenden Emails aus einem Skript heraus. Bisher ist diese Prozedur immer an dem Fehlen des Parameters 'smtpauthenticate' gescheitert. Um eine Anmeldung am SMTP-Server durchzuführen reichen NICHT die beiden Parameter 'sendusername' und 'sendpassword', sondern es muss noch der dritte Parameter 'smtpauthenticate' mit gesetzt werden, um das Verwenden der anderen beiden Parametern auszulösen.

QuellCode> kontext-besitzerwerden.vbs
Im Kontext-Menü des Windows-Explorers wird ein Eintrag 'Besitz übernehmen' hinzugefügt . . wer nicht genaustens weiß, was das beduetet, sollte das Skript nicht verwenden - es kann das Betriebssystem unbrauchbar machen!

QuellCode> netzpfadermitteln.vbs
Enthält zwei Prozeduren:
 Function NetzPfadVonLwErmitteln( Lw )  erwartet einen Laufwerksbuchstaben als Parameter und wird in kontext-pfadinzwischenablage.vbs verwendet
 Function NetzPfadErmitteln( Datei )  erwartet einen Laufwerksbuchstaben oder einen Pfad zu einer Datei oder einem Verzeichnis als Parameter.
Mit C: als Parameter erhält man \\[PCName]\c$.

QuellCode> wmi-x64.vbs
 Function ist64bit( PC )  ermittelt, ob das Betriebssystem x64 (64-Bit) oder x86 (32-Bit) ist.

Aktualisiert (weniger Fehler) aus Version v10.8 vom 31.08.2010:
 
QuellCode> WIM-BuR.hta
ermöglicht eine Datensicherung bzw. Datenrücksicherung in/aus WIM-Dateien mit dem Microsoft-Tool ImageX.exe (und sollte auf jeder WinVista- und Win7-InstallationCD vorhanden sein). Seit Windows Vista stellt ImageX.exe für die Betriebssysteminstallation Dateien aus einem WIM bereit (Windows Imaging File Format; auf der Installations-DVD). Es ist Bestandteil des WAIK, für jeden Anwender verfügbar und gilt als zuverlässig, um Daten in WIMs zu speichern. Nähere Informationen über ImageX.exe, WIM-Dateien und WAIK sind in WIM-BuR.hta hinterlegt und sollen hier nicht wiederholt werden. Das HTA kann sich selbst als Standard-Anwendung für WIM-Dateien eintragen und benötigt zwingend ImageX.exe und fragt ggf. nach dem Ort, wo sich diese Datei befindet.
Für meine Skriptentwicklung und für Arbeiten an dieseyer.de verwende ich verschiedene Unterverzeichnisse in c:\dieseyer.de\. Dieses Verzeichnis synchronisiere ich auf drei Computern. Mit WIM-BuR.hta habe ich einen geplanten Task eingerichtet, der zu jeder vollen Stunde eine Komplett-Datensicherung in ein und das selbe WIM durchführt - 83 Sicherungen von jedesmal ca. 30MB ergeben statt 2,46 GB ein knapp 40 MB großes WIM: WIM-Inhalt. Und der größte Vorteil: Jede Sicherung kann ich als Komplett-Backup zum Wiederherstellen verwenden! Das Hta lässt sich auch in BartPE / WinPE verwenden, wenn die Hta-Unterstützung gegeben ist.
WIM-BuR, Download bei heise
Neu: Eine neue Version.

QuellCode> wim-inhalt.vbs
zeigt den Inhalt von WIM-Dateien an, die mit ImageX.exe erstellt wurden. Das VBS kann sich selbst als Standard-Anwendung für WIM-Dateien eintragen und benötigt zwingend ImageX.exe und fragt ggf. nach dem Ort, wo sich diese Datei befindet. ImageX.exe ist Bestandteil des WAIK (vergl. WIM-BuR).


Seit längerem (min. 1 Monat) unveränderte Dateien: (alphabetisch geordnet)

QuellCode> 00-anfang.vbs
Das 'Grundgerüst' für ein neues Skript - das wichtigstes ist schon drin.
QuellCode> 00-anfang-trc32.vbs
die LOG-Datei ist für trace32.exe (vergl. trace32.exe) optimiert - das wichtigstes ist schon drin.
QuellCode> 00-anfang-alle10s-trc32.vbs

QuellCode> 100Prozent.vbs
verursacht 100% CPU-Auslastung bis in dem Verzeichnis, in dem sich das Skript befindet, eine "ende.txt" erstellt wurde. dse-statistic.html
 
QuellCode> 1und1_htmlstatistic_nach_html.vbs
Ist der Provider der eigenen Site 1&1, befindet sich im Verzeichnis ftp://[site]/logs/traffic.html die Zugriffs-Statistik der letzten 12 Monate - je Monat eine [Monat].html. Sind diese Dateien über mehrere Jahre in einem Verzeichnis nach dem Muster "[Jahr]-[Monat].html" gespeichert, erstellt 1und1_htmlstatistic_nach_html.vbs eine Kurzübersicht als HTML-Datei - vergl. dieseyer.de/dse-statistic.html


QuellCode> 2-5mal-input.vbs
zerlegt / extrahiert aus der Eingabe in eine InputBox mehrere Eingaben.
QuellCode> 2-5mal-input-ds.vbs
eine andere Variante (von mir) . . . oder als HTA:
QuellCode> input.hta
erfasst mehrere Eingabe in einem Formular - von der . . . mehr • HTA-Seite.

QuellCode> 7s-aufeingabewarten.vbs
zeigt eine Varainate, wie bei fehlender Benutzereingabe nach einer festgelegten Zeit das Skript sich selbst beendet.

QuellCode> AcronisAlteTibEntfernen.vbs
Im Skript ist eine Datei anzugebeben, die nicht gelöscht wird - aber ALLE Dateien in dem selben Verzeichnis mit der selben Dateinamenerweiterung (Extension), die ein bestimmtes Alter haben, werden beim Skriptaufruf gelöscht.

QuellCode> adminstart.vbs
zum 'Skripte und Programme unter anderem Benutzer starten zu können (by EagleSoft Ltd. / Roland Weisskopf).
 adminstart.vbs /UPC01\administrator /PPwdGeheim! /Stemp-hilfe.vbs  startet 'temp-hilfe.vbs' mit dem User 'PC01\administrator' (also der User 'administrator' des lokalen Accounts auf 'PC01' bei Workgroup-PCs oder der User 'administrator' des AD-Accounts der Domäne 'PC01') und dem Passwort 'PwdGeheim!'

QuellCode> wmi-aktive-vbs.vbs
 Function AnzahlLaufendeVBS( VBScripts )  prüft, wie oft ein VBS mit einem bestimmten Namen unter "wscript.exe" oder "cscript.exe" gerade läuft.

QuellCode> wmi-laufendevbs.vbs
 Function LaufendeSkripte( PC )  prüft, welche Skripte durch "wscript.exe" oder "cscript.exe" gerade laufen und
 Function SkriptBeenden( PC, Progr )  beendet ein Skript von den ermittelten.

QuellCode> aktuelledmtfdatetime.vbs
 Function AktuelleDMTFDateTime() 
wandelt die aktuelle Zeit in das DMTF-DateTime-Zeitformat (mit Zeitverschiebung; Sommerzeit; DST).

wschmelz-beispiele.exe
von W. Schmelz (entpackt sich in einen Ordner) und enthält eine Sammlung von Beispielskripten - also eine 'Konkurrenz' zu meiner Site . . .

Infos> allesschluss.exe
(entpackt sich in einen Ordner) von W. Schmelz "AllesSchluss.vbs" beendet (fast) alle laufenden Programme, mindestens aber die aus "PrgListe.txt". Nach 12s Bedenkzeit fährt das Programm anschließend den PC herunter oder startet ihn neu. Eine Installation erfolgt beim ersten Programmstart.

QuellCode> alleprozesseundtasks.vbs
 Function AlleProzesseUndTasksArray( PC ) 
Die Tasks mit ProzessID 0 laufen nicht und sind im Taskmanager in 'Leerlaufprozess' (Idle) zusammengefasst.
 Function AlleProzesseUndTasksText( PC ) 
erfasst alle Prozesse aus Win32_Service und Win32_Process.

QuellCode> Anmelden-an-Win9x.vbs
erzwingt eine Anmeldung an Win9x/ME, wenn dieses Skript im Autostart abgelegt ist. Ich hatte einige PCs, bei denen Änderungen an der Registry, wie auf WinFAQ.de vorgeschlagen, nicht den gewünschten Erfolg brachten.

QuellCode> arrayanzeigen.vbs
 Function ArrayZeigen( InArray )  zeigt von einem Array nur die ersten und letzten Elemente an. Da die MsgBox nur 1024 Zeichen anzeigen kann, ist die Anzahl der angezeigten Elemente von der Summe der Länge der einzelnen Elemente abhängig.

QuellCode> arrayanzeigen-dateiinhalt.vbs
 Function DateiInhalt( DateiX )  liest eine Datei in ein Array ein, die mit
 Function ArrayZeigen( arrDateiLst )  angezeigt wird. Dann wird das Array mit
 Function QuickSort( vntArray, intVon, intBis )  sortiert und erneut mit
 Function ArrayZeigen( arrDateiLst )  angezeigt.
 Sub DateiSchreiben( arrDaten, ZielDatei )  schreibt ein Array - hier das sortierte - in eine Datei (ohne die Quell-Datei zu überschreiben).
 Function DateiInhalt( DateiX ) 

QuellCode> arrayanzeigen-dateiliste.vbs
 Function Dateilisteholen( Verz )  gibt ein Array mit dem kompletten Dateinamen von allen Dateien zurück, die in dem übergebenen Verzeichnis vorhanden sind. Ein rekursives Auflisten der Datein in Unterverzeichnissen erfolgt nicht!
 Function ArrayZeigen( arrDateiLst )  zeigt die Dateiliste an, bevor diese Liste mit
 Function QuickSort( vntArray, intVon, intBis )  sortiert und mit
 Function ArrayZeigen( arrDateiLst )  erneut angezeigt wird . . . was eigentlich keinen richtigen Sinn macht, weil die Dateiliste ohnehin sortiert ist.

QuellCode> arrayanzeigen-verzeichnisliste.vbs
 Function Verzeichnislisteholen( QuellVerz )  gibt ein Array mit dem kompletten Verzeichnisnamen von allen Verzeichnissen zurück, die in dem übergebenen Verzeichnis vorhanden sind. Ein rekursives Auflisten der Verzeichnisse in Unterverzeichnissen erfolgt nicht!
 Function ArrayZeigen( arrVerzLst )  zeigt die Verzeichnisliste an, bevor diese Liste mit
 Function QuickSort( vntArray, intVon, intBis )  sortiert und mit
 Function ArrayZeigen( arrVerzLst )  erneut angezeigt wird . . . was eigentlich keinen richtigen Sinn macht, weil die Verzeichnisliste ohnehin sortiert ist.

QuellCode> AttributeChange.vbs
ermöglicht das Zurücksetzen der Attribute von Dateien. Dazu ein oder mehrere Dateien bzw. Ordner auf das Skript ziehen und fallen lassen. Das Skript startet dann und setzt alle Hidden-, System- und ReadOnly-Datei-Attribute zurück, das Archiv-Attribut bleibt unverändert. Bei übergebenen Verzeichnissen werden in allen Unterverzeichnissen die Attribute zurück gesetzt.

QuellCode> autologonsetzen.hta
ist ein komfortablere Variante, um das AutoLogon an einem PC zu setzen bzw. zu deaktivieren als
QuellCode> AutoLogonEin.vbs
setzt das AutoLogon für WinNT/2k - wenn man entsprechende Rechte hat.

QuellCode> autostart.vbs
 Sub AutoStart( PC )  gibt ein Array zurück, in dem alle Autostarteinträge gelistet sind. Jedes Array-Element enthält folgende, durch Tabulator getrennte Informationen:
    - Command; Befehl, .exe
    - Description; Beschreibung, Name
    - Location; z.B. Eintrag im AutoStart-Ordner oder der Registry-Schlüssel
    - Name;häufig identisch mit Description
    - User; z.B. 'All Users', '.DEFAULT' 'NT-AUTORITÄT\SYSTEM'


QuellCode> autostart-run.vbs
ermittelt, was auf einem WinNT-PC so alles vor- und nach der Anmeldung automatisch gestartet wird. Das Skript setzt Regobj.dll voraus.
QuellCode> autostart-run2.vbs
von "LICHTER", aber von mir nicht geprüft.
Besser, man verwendet 'msconfig' über [Start] - [Ausführen].

QuellCode> bilddatumordner.vbs
von W. Schmelz bildet aus dem Datum der Original-Bilder einen zu erstellenden Ordner (Ordnername mit Datumsangabe) mit bis zu 4 wählbaren Unter-Ordnern. Vorgeschlagen wird: "Original", "Zwischen", "Bearbeitung". Die Bilder werden abschließend in den zuerst genannten Unterordner verschoben.

QuellCode> bildnummeriersortier.vbs
von W. Schmelz zum Bilder eines Ordners benennen und/oder nummerieren oder wahlweise Original-Bilder zweier Ordner durch Benennung nach Datum und Zeit zeitlich passend ineinander sortieren und dann durch nummerieren. Dabei sind pro Kamera secs Bilder pro Sekunde möglich. Auf Wunsch kann vor die endgültigen Nummern ein Name gesetzt werden. Die Kameranamen können angehängt werden:"08_Alp377_C" wie "Canon". Bei einer Zeitverschiebung zwischen zwei Kameras kann der Zeitversatz eingegeben werden. Als Messpunkt einfach mit beiden Kameras gleichzeitig ein Bild schießen. Die Bilder werden im ausgesuchten Ordner gespeichert. Reicht der Platz nicht, wird gefragt, wohin sonst diese Bilder sollen. Gesteuert wird das durch Vorweg-Eingaben in eine HTA-Datei, die durch zwei Klapptafeln den Fall, einen Ordner zu behandeln von dem zweiten trennt, Bilder zweier Ordner zeitlich passend zu sortieren. Diese Original - Ordner bleiben, daher ist keine Sicherung nötig.

QuellCode> biosserialnumber-wmi.vbs
 Function BIOSSN( PCName )  liest die Seriennummer (Serialnumber bzw. S/N), wie sie im BIOS hinterlegt ist, aus.

 Function BFF() 
läuft in Win7 nicht, weil CreateObject("UserAccounts.CommonDialog") nicht implementiert ist.
QuellCode> browse-for-file-ie.vbs
 Function ChooseFile()  ermöglicht eine Dateiauswahl mit IE-Funktionen.
QuellCode> browse-for-file.vbs
 Function BFF()  ermöglicht die Dateiauswahl, wobei auch eine Einschränkung auf den Dateityp erfolgen kann . . . zum ausprobieren.
QuellCode> browse-for-folder.vbs
 Function BrowseForFolder( strPrompt, intBrowseInfo, vRootFolder )  enthält sehr viele Möglichkeiten, wie man mit VBS eine Datei- bzw. Verzeichnisauswahl realisieren kann - von codecomments.com/message367170.html. Daraus kann man z.B. folgenden Einzeiler ableiten:
QuellCode> browse-for-folder-1.vbs

QuellCode> cd-lw-auf-zu.vbs
verwendet "WMPlayer.OCX" zum Öffnen und Schließen des CD-Laufwerkes.

QuellCode> cd-lw-ermitteln.vbs
 Function CDLwTest( Text )  sucht in allen CD-Laufwerken, ob eine bestimmte CD-ROM / DVD (VolumeName) eingelegt ist.

QuellCode> CD-Menu.vbs <Funktion
ist ein mögliches Skript, das über die Autostartfunktion des Betriebssystems ein Auswahlmenü zur Verfügung stellt.

QuellCode> CD-Start.vbs
zeigt, wie durch die Autorun-Funktion des (MS-) Betriebssystems automatisch ein Skript gestartet werden kann.

QuellCode> CDauswerfen.vbs
benutzt die Shell32.DLL (Vergl. Verlaufs- bzw. Fortschrittsanzeige beim Kopieren), um das CD-Laufwerk zu öffnen (CD Auswerfen).

QuellCode> CDdurchsuchen.vbs <Funktion
sucht nach einem CD-Laufwerk und schreibt eine Inhaltsliste, die durchsucht werden kann. Oder man zieht eine Datei auf das Skript, die sich dann durchsuchen lässt.

QuellCode> changefilenames.vbs
von P. Ladnar. Du hast eine digitale Kamera und dich nervt es auch, die Dateinamen mühselig manuell in sinnvolle Namen zu ändern? Dann ist dieses Tool genau richtig für dich! Es benennt alle Dateien eines wählbaren Verzeichnisses in einen neuen, durchnummerierten Namen um.
QuellCode> changefilenames-imag0001.vbs
von Michael Wende geht davon aus, dass die Bilddateien im Digicam Ordner von verschiedenen Anlässen als z.B. IMAG0001 bis IMAG0144 vorliegen. Wobei die Bilddateien IMAG0001 - IMAG0012 vom Geburtstag sind; IMAG0013 - IMAG0025 sind die der Gartenparty. Das Skript ändert z.B. bei der Eingabe von "0013 - 0025" und "Gartenparty Sommer" die Dateien IMAG0013 - IMAG0025 in "Gartenparty Sommer0001" - "Gartenparty Sommer0013" um.

Infos> chiffr60.exe bzw. chiffr60S.exe
beinhaltet ein Chiffrier- bzw. Verschlüsselungs-Lösung von W. Schmelz. In der "S"-Version wird "Shred.exe" verwendet, um auch Dateireste auf der Festplatte unlesbar zu machen.

QuellCode> chkdsk-defrag.cmd
gehört ja eigentlich nicht hier her . . . aber führt Defrag und CHKDSK für C: und D: aus (mit PC-Neustart).

QuellCode> computer-function.vbs
 Function ComputerFu( PCname )  gibt zurück, welche Funktion das Betriebssystem hat: "Standalone Workstation", "Member Workstation", "Standalone Server", "Member Server", "Backup Domain Controller", "Primary Domain Controller"

QuellCode> convert-b4s-to-m3u.vbs
von Michael Wende wandelt in einem angegebenen Ordner alle 'alten' .4bs Winampplaylistdatei(en) in .m3u Playlist(en).

QuellCode> dateilisteholenmitdatumundname.vbs
 Function DateilisteHolenMitDatumUndName( Verz, DNA )  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und erwartet ein Verzeichnis und die Zeichen, mit denen die Dateinamen beginnen, die gelistet werden sollen; DNA steht für 'DateiNamenAnfang'. Die Liste, die die Prozedur zurück gibt, ist ein Array, bei der jede Zeile den Dateinamen und das Änderungsdatum dieser Datei enthält; getrennt sind diese beiden Angaben durch '~' (Tilde). In WinTuC.de wird diese Prozedur verwendet, um die Liste der KB-LOG-Dateien (meist 'C:\Windows\KB*.log' bzw. '\\PCName\C$\Windows\KB*.log') zu erhalten.
 
QuellCode> DateiNamenLangDIR.vbs
listet alle Dateien in einem Laufwerk, deren Name zusammen mit dem kompletten Pfad eine bestimmte Länge überschreiten. (Eine solche Liste war erforderlich, weil ein Datensicherungsprogramm wegen zu langer Dateinamen immer wieder abgebrochen ist.) Ursprünglich sollte eine reine Skriptlösung eine Liste erstellen und dazu die Verzeichnisse rekursiv (Routine von G. Born) durchsuchen. Zunächst verursachte das Skript bei Dateinamen/Pfaden mit '#' eine Fehlermeldung und brach ab. Bei einem Test mit dem DOS- bzw. Konsole-Kommando 'c: dir /s/b' stellte sich eine wesentlich höhere Performance heraus: Auf einem Netzlaufwerk mit ca. 2.500 Dateien bzw. Pfaden benötigte das DIR-Kommando nur 8 statt 85 Sekunden mit der Skript-Variante. Zum Vergleich ist auch das DateiNamenLangVBS.vbs verfügbar. Warum und unter welchen Bedingungen das '#' einen Fehler verursacht, wurde auf Grund der Performanceunterschiede nicht weiter untersucht.
Am besten 'Ordner auf das Skript ziehen und fallen lassen' als Eingabe - das Ergebnis wird mit trace32.exe angezeigt (vergl. trace32.exe).

QuellCode> dateispeichernunter.vbs
 Function DatenInDateiSpeichernunter( Datei, Txt )  ist Bestandteil der Datei WinTuCKonfig.hta des Projekts WinTuC.de und öffnet den 'Speichern unter'-Dialog. Sobald dieser mit der Angabe einer Datei endet, wird der an die Prozedur übergebene Text in diese Datei gespeichert. Das Skript öffnet im Anschluß die Datei mit Notepad.

QuellCode> DateiTypRegistrieren.vbs
 Sub DateiTypRegistrieren( DateiTyp, Progr )  legt ein Programm als Standard-Anwendung für einen Dateityp fest (Dateiendung registrieren). Bei einem Doppelklick auf eine Datei mit dieser Dateiendung öffnet sich künftig diese Anwendung und erhält als Parameter die doppelt geklickte Datei - so, wie Word geöffnet wird, wenn man eine .doc-Datei doppelt klickt. Das Skript registriert als Beispiel die Dateieindung "n-p" für NotePad.
 
QuellCode> Datensicherung.vbs
erstellt im Zielverzeichnis ein Verzeichnis mit Tagesdatum. Dort werden, gemäß einer Verzeichnisliste, die zu sichernden Dateien abgelegt - mit der rar.exe von winrar.de, mit robocopy.exe von ?RoboCopy? oder mit xcopy.  . . . mit Protokoll! Am einfachsten ist m.E. das Packen in ein selbstentpackendes RAR-Archive mit der rar.exe. Dazu muss nur die rar.exe und die default.sfx aus dem (aktuellem) WinRAR-Installationspaket (z.B. wrar370d.exe) in das Windows-Verzeichnis kopiert werden. Für die 7-Zip - Unterstützung müssen nur die beiden Dateien 7z.sfx und 7z.exe für das VBS verfügbar sein.

Infos> desktopbild.exe
(entpackt sich in einen Ordner) von W. Schmelz: Dieses Programm wählt aus einer Sammlung von Bildern zufällig eines aus und setzt es als Hintergrundbild - wenn gewünscht. Auch aus dem Programm heraus kann ein Bild ausgewählt werden - über die Desktop-Verknüpfung oder die Taskleiste. JPG- und BMP-Bilder sind möglich. Von W. Schmelz.

QuellCode> CRLF-entfernen.vbs
entfernt alle CR, LF und CRLF aus einer Datei. Der wesentliche Unterschied zu
QuellCode> cr2crlf.vbs
ist der, dass die Datei nicht zeilenweise (.ReadLine), sonder mit einem .ReadAll komplett eingelesen wird. Nur dadurch ist es möglich, auch die Zeilenenden am Zeilenende zu entfernen.

QuellCode> countdown-programmstart.hta
startet nach einer einstellbaren Zeit ein Programm - z.B. 'shutdown -r -f -t 10'; aber keine Angst: im HTA ist 'notepad.exe' hinterlegt.

QuellCode> datei-in-datum-sichern.vbs
überprüft, ob es eine bestimmte Datei gibt, kopiert diese in ein Sicherungsverzeichnis und benennt sie dabei um - der neue Dateiname ist der Kopierzeitpunkt. Die alte Datei wird gelöscht. Interressant ist hier die Prozedur
 Function DatumZeit() , die aus der aktuellen Zeit (mit Datum) eine Zeichenkette macht, die als Datei- oder Verzeichnisname verwendet werden kann.
 
QuellCode> Datei-Verzeichnis-Liste.vbs <Funktion
enthält Beispielcode, wie man in einem oder dem aktuellen Verzeichnis alle Dateien und alle Verzeichnisse ermittelt. Dazu werden alle Dateien bzw. Verzeichnisse zunächst in ein Array geladen, dann etwas bearbeitet und das Ergebnis dann angezeigt. Man kann ein Verzeichnis oder eine Datei auf das Skript ziehen und fallen lassen.

QuellCode> dateienvergleich-1.vbs
Dazu schreibt W. Schmelz: "Vergleich zweier im Explorer ausgesuchter Dateien. Die Unterschiede beider Dateien oder Einschübe werden zeilenweise samt Nummern der Zeilen in der Datei Datei-Vgl.txt im Programmverzeichnis ausgegeben. Anfangs werden beide Dateien nummeriert angegeben. Die Leerstellen zum Einrücken (am Zeilenanfang) werden nicht beachtet. "Fc.exe" (FileCompare) von MS versagte an mehreren Beispielen und meldete Fehler - so hat sich die (Neu-) Programmierung immerhin gelohnt. Das Programm ist ausschließlich auf VBS-Basis und benutzt nicht den entsprechenden Befehlszeilenprogramm: fc . . . !"
 . . wie das von mir:
QuellCode> dateienvergleich.vbs
vergleicht, wie der Name bereits verrät, (zwei) Dateien - über eine Auswahl per Binär- oder Textvergleich. Dazu die beiden zu vergleichenden Dateien auf das Skript ziehen und fallen lassen (Drag & Drop). Wird das Skript (mit Doppelklick) gestartet, bietet es an, das Windows-Explorer - Kontextmenü zu erweitern. Dann kann man im Explorer zwei Dateien markieren und (dann durch Klicken mit der rechten Maus-Taste und über 'Senden an') die markierten Dateien an das Skript übergeben.
Das Skript verwendet das Befehlszeilenprogramm 'fc.exe', das beim zeilenweisen Vergleich auch nach mehren (unterschiedlichen) Zeilen wieder synchronisiert - DAS wollte ich nicht nach programmieren.

dateienverschieben_xxx.html In den folgenden drei Skripten ist jeweils eine Prozedur enthalten, durch die die Dateien eines übergebenen Arrays
 Function Dateilisteholen( Verz )  in ein Zielverzeichnis verschoben werden. Z.Z. kopieren die Skripte - kein Verschieben! Um dies zu ändern, müssen die beiden Zeile im jeweiligen Skript getauscht werden:
    ' fso.MoveFile arrDateiLst( i ), ZwName
      fso.CopyFile arrDateiLst( i ), ZwName
Ein Fehler wird angezeigt, wenn:
    - die als Dateiliste übergebene Variable kein Array ist
    - das Laufwerk des Zielverzeichnis nicht vorhanden ist
    - der Freigabename eines Netzlaufwerks nicht erreichbar ist
Das ZielVerz. bzw. deren Unterverzeichnisse werden erstellt, sofern sie nicht vorhanden sind. Als ZielVerz. muss ein Verzeichnis im Laufwerk bzw. im Freigabename angegeben werden.
QuellCode> dateienverschieben_lfd.vbs
 Function DateienVerschiebenLFD( arrDateiLst, ZielVerz )  fügt in den Dateinamen vor der Endung (nach einem Unterstrich) eine 3stellige Zahl mit führenden Nullen ein; nach der letzten, die vorhandenen ist: Sind t_000.txt, t_001.txt, t_002.txt, t_008.txt (von t.txt) vorhanden, wird t_003.txt (nicht t_009.txt) erstellt. Sind alle Dateien bis t_999.txt, gibt es eine Fehlermeldung und die Datei t_999.txt wird überschrieben!
QuellCode> dateienverschieben_nr.vbs
 Function DateienVerschiebenNR( arrDateiLst, ZielVerz )  fügt in den Dateinamen vor der Endung (nach einem Unterstrich) eine 3stellige Zahl mit führenden Nullen ein; die erste, die möglich ist: Sind t_000.txt, t_001.txt, t_002.txt, t_008.txt (von t.txt) vorhanden, wird t_003.txt (nicht t_009.txt) erstellt. Sind alle Dateien bis t_999.txt, gibt es eine Fehlermeldung und die Datei t_999.txt wird überschrieben!
QuellCode> dateienverschieben_zufall.vbs
 Function DateienVerschiebenZufall( arrDateiLst, ZielVerz )  fügt in den Dateinamen vor der Endung (nach einem Unterstrich) eine zufällige 5stellige Hex-Zahl ein.

QuellCode> dateienverschieben-alteloeschen.vbs
ist aus dem Skript 'dateienalteliste.vbs' mit der Prozedur
 Function AlteDateien( arrDateiLst, Alter, ZeitType ) 
und folgenden Erweiterungen entstanden:
 -  Function DateienVerschiebenZufall( arrDateiLst, ZielVerz )  aus dateienverschieben_zufall.vbs
 -  Function DateiListeLoeschen( arrDateiLst )  aus dateienaltdelete-3.vbs
 - Parameter für das ZielVerz.
 - Parameter um das Löschen zu aktivieren/deaktivieren (LoeschenAktiv = "YES")

QuellCode> dateienalteliste.vbs
 Function AlteDateien( arrDateiLst, Alter, ZeitType )  ist die wesentliche Prozedur, an die wird ein Array mit einer Dateiliste zu übergeben. Das Ergebnis ist dieses Array, das nur noch die ausgewählten (bzw. alten) Dateien enthält - die anderen Array-Elemente sind leer. Die Parameter für den Aufruf der Prozedur:
arrDateiLst: wenn die Variable kein Array ist, wird ein Fehler angezeigt
Alter: kann ein Datum oder eine Zahl sein (mit führendem - oder +)
ZeitType: und Datum als Alter: ZeitType kann "VOR" oder "NACH" enthalten; für z.B. "VOR" (dem) 03.10.89 (erstellt)
ZeitType: und Zahl als Alter: Für den ZeitType ist der Syntax der DateDiff-Funktion bindend: yyyy Jahr; q Quartal; m Monat d Tag; y Tag im Jahr; w Wochentag; ww Woche im Jahr; h Stunde; n Minute; s Sekunde (Es wurden nicht alle getestet)
  +  heißt älter als (bzw. größer oder "NACH" ??? erstellt)
  -   heißt jünger als (bzw. kleiner oder "VOR" ??? erstellt)

Dateien in Tagesordner sammeln bei http://heise.de/ct.

QuellCode> DateienAltDelete.vbs
löscht alle alten Dateien in einem Verzeichnis (C:\Temp), die seit 100 Tagen nicht mehr geändert wurden (siehe auch VerzeichnisAltDelete).
QuellCode> DateienAltDelete-2.vbs
von http://heise.de/ct.
QuellCode> DateienAltDeleteTyp.vbs
löscht alle alten Dateien mit einer bestimmten Dateiendung.
QuellCode> dateienaltverschieben.vbs
verschiebt Dateien ab einem einstellbarem Datum aus ein Verzeichnis in ein anderes.
QuellCode> DateienAltDelete-3.vbs
ist aus dem Skript 'dateienalteliste.vbs' mit der Prozedur
 Function AlteDateien( arrDateiLst, Alter, ZeitType )  und folgenden Erweiterungen entstanden:
    - die Prozedur "DateiListeLoeschen arrDateiLst"
    - Parameter um das Löschen zu aktivieren/deaktivieren (LoeschenAktiv = "YES")

QuellCode> DateienVonHeute.vbs
ist eine Anwendung, die auf Datei-Verzeichnis-Liste.vbs aufbaut und nur die Dateien auflistet, bei denen das Änderungsdatum mit dem aktuellen Tagesdatum übereinstimmt.

QuellCode> dateierstellt.vbs
überwacht ein Verzeichnis (ohne CPU-Last) und meldet sich, wenn eine Datei erstellt wurde.

QuellCode> dateinachwortdurchsuchen.vbs
Dazu schreibt W. Schmelz: Beliebige Datei auf dieses Programm ziehen und loslassen! Ein zu suchendes Wort eingeben, Groß- und Kleinschreibung ist wichtig! Die Zeilen mit dem gesuchten Wort werden dann mit der Nummerierung angezeigt!

QuellCode> DateiAlsHtml.vbs
verwende ich, um eine Datei als HTML-Datei abzuspeichern. Dadurch kann eine (Text-, Protokoll-, Skript-) ASCII-Datei (mit ein paar Zusatzinformationen) im Browser dargestellt werden.

QuellCode> DateiErweiterung-1Zeichen.vbs
ändert die Dateierweiterung (Extension) auf ein Zeichen:
muster.txt =>  muster.t     Ich weiß: Scheint nicht sonderlich sinnvoll, aber es hat mal jemand nach so einem Skript gesucht.

QuellCode> dateiliste-nach-datum.vbs
zeigt die Dateien in einem Verzeichnis nach Datum sortiert.
QuellCode> dateiliste-nach-datum2.vbs
zeigt ebenfalls die Dateien in einem Verzeichnis nach Datum sortiert, benutzt aber "ADOR.Recordset". (Wäre schön, wenn mir das mal jemand erklären könnte!)

QuellCode> DateiNameSpeichern.vbs
speichert Dateiname und -pfad in eine Datei. Dazu mit der Maus eine Datei / Ordner auf das Skript ziehen und der komplette Pfad wird in einer Datei gespeichert . . . Oder man legt das Skript im "SendTo"-Ordner ab und kann dann mit der rechten Maus-Taste die Info speichern. (Aufgrund einer Newsgroup-Anfrage entstanden.)

QuellCode> DateinamenInKleinbuchstaben.vbs
Alle Dateiennamen eines Verzeichnises werden auf Kleinbuchstaben geändert.

QuellCode> DateiSichernBak.vbs
sichert .BAK-Dateien. Folgendes Problem war zu lösen: Ein Server schreibt eine .LOG-Datei. Sobald diese größer als 1 MByte ist, wird sie in. *.bak umbenannt und dabei die alte .BAK-Datei überschrieben - das geschieht ca.  alle zwei Tage. Das Skript prüft nun stündlich das Dateidatum (DateLastModified) dieser .BAK-Datei und sobald sich dieses ändert, wird eine Kopie 'sicher gestellt'.

QuellCode> zeileandateianfangeinfügen.vbs
 Sub ErsteZeileDazu( Datei, Txt )  fügt in eine Datei eine (neue) erste Zeile ein. Dazu wird die Datei komplett in eine Variable eingelesen, diese an die neue Zeile angehängt und die Datei geschrieben.

QuellCode> zeilennummer.vbs
Dazu schreibt W. Schmelz: "Eine aufgesetzte Datei (eine Datei auf VBS ziehen und fallen lassen) wird als neue Datei mit Nummerierung der Zeilen ausgegeben, auf Wunsch sofort löschbar." Ähnlich wie  
QuellCode> DateiZeilenweiseLesenBearbeitenSchreiben.vbs
(DateiZLBS.vbs) für eine weit verbreitete Aufgabe: Eine Datei ist komplett zu Lesen, (ein paar) Zeilen sind zu ändern und in eine (neue) Datei zu schreiben. Um die (Quell-) Datei nur kurz zu öffnen, wird diese zunächst in ein Array gelesen, das Array dann bearbeitet und anschließend an eine Datei übergeben. Dazu die zu ändernde Datei auf das Skript ziehen und fallen lassen (Drag & Drop). Die Zieldatei wird mit Notepad angezeigt und beim Schließen von Notepad gelöscht.

QuellCode> cr2crlf.vbs ist auf Grundlage von DateiZLBS.vbs entstanden und wandelt in einer Datei jedes CR zu CRLF um (und löscht alle CRLFLF).

QuellCode> deltree.vbs <Funktion
enthält im wesentlichen Code aus datei-verzeichnis-liste.vbs.
Wird eine Datei oder ein Verzeichnis auf das Skript gezogen (Drag & Drop), löscht es alle Dateien und danach alle Unterverzeichnisse in einem Verzeichnis. Zieht man eine Datei auf das Skript, wird das Verzeichnis, in dem sich die Datei befindet, ermittelt und der Inhalt wie beschrieben gelöscht.
Das eigentliche DELTREE befindet sich in einer SUB-Prozedur, in der auch eventuell gesetzte Attribute zurück gesetzt werden. Vor der DELTREE-Prozedur erfolgen in einer SUB-Prozedur Sicherheitsabfragen.

QuellCode> dez2hex.vbs
von Hubert Daubmeier wandelt eine Dezimalzahl (0 bis ca. 100 Milliarden) in eine Hex-Zahl. Bei Fließkommazahlen größer 2^53 kann es zu Rundungsfehlern kommen.

QuellCode> DHCP Enable Automatically Using WSH VBScript - ein HOWTO aus der MS Knowledge Base (Q197424).

QuellCode> dir2htmlview
von Chr. Römhild. In dem Archiv befindet sich das Skript und einige Spezialdateien. 'dir2htmlview.vbs' öffnet eine HTML-Datei und zeigt in einem Frame die Dateien des gedroppten Ordners an. Das Skript benötigt ein Unterverzeichnis (FrameScroller) mit einigen Spezialdateien.

QuellCode> DirAnalyze.vbs
Von Ingolf Müller findet verdächtig lange Verzeichnisnamen im Dateisystem und speichert sie in einer LOG-Datei. Skript muss mit administrativen Rechten ausgeführt werden!!! Wenn der Administrator nicht überall zumindest Leserechte hat, meldet das Programm für das erste zutreffende Verzeichnis einen Fehler und bricht die Verarbeitung ab. Vergl. dazu auch
DateiNamenLangDIR.vbs.

QuellCode> disk0-test.vbs
verwendet DISKPART.EXE in der Exec-Methode um die Größe von 'DISK 0' zu ermitteln - egal, wie viel Partitionen die Platte enthält.

QuellCode> dnstesten.vbs
 Function DNSTesten( PC )  liest das Verbindungsspezifische DNS-Suffix aus, das normalerweise per DHCP auf dem Client gesetzt wird. Dadurch lässt sich z.B. der Standort bestimmen.

QuellCode> DruckerAuswahl.vbs
ist in eine universell einsetzbare Function-Prozedur verpackt. Das Skript bietet eine Auswahl der Netzwerk- bzw. der lokalen Drucker; Virtuelle Drucker (FinePrint; PDF; Drucken in Datei) stehen nicht zur Auswahl - das lässt sich aber ändern.

QuellCode> DruckerListe.vbs
zeigt alle installierten Drucker mit deren Schnittstelle (lokale bzw. Netzwerkpfad) und welcher Drucker der Standarddrucker ist - das Skript setzt Regobj.dll voraus.
QuellCode> wmi-druckerliste.vbs zeigt dank WMI mehr Informationen über angeschlossene Drucker.

QuellCode> erinnerung.vbs
erstellt mit Datum/Zeit eine versteckte "C:\Erinnerung.txt" und setzt in der Egistry "/All Users/.../Autostart/" einen Eintrag, damit beim nächsten Systemstart das Skript (versteckt) wieder anläuft (und die .txt ausliest) . . . bis die Zeit REIF ist.

QuellCode> eventlog.vbs
Den Abarbeitungsstatus eines Skripts kann man mit einem Einzeiler oder mit
 Sub AnwendungEreignisInEventLog( EventType, Txt ) 
in die Ereignisanzeige (Eventlog) Anwendungen (Application) schreiben.

QuellCode> Eventlog-BlueScreen.vbs
BlueScreens stehen nicht im Eventlog. Um zu sehen, wie oft es möglicherweise einen gegeben hat, kann man auswerten, wie oft die EventID 6006 (Shutdown) fehlt . . . und dies macht dieses Skript.

QuellCode> exec-hidden.vbs
QuellCode> exec-hidden-plus.vbs
QuellCode> exec-test.vbs
sind Beispielskripte, die die WSHShell.Exec-Methode benutzen, wie sie mit den Windows Script - Technologien Version 5.6 von MS eingeführt wurde. Nähere Informationen und einige Erklärungen finden sich unter Programme starten - WSHShell.Exec-Methode  

QuellCode> fso-beispielcode.vbs
ist eine Kopie aus der VisualBasicScripting-Hilfe v5.5 von MS und soll hier nur eine einfach zu durchsuchende Sammlung der FSO-Objekte sein.

QuellCode> GmxAutoLogin.vbs
lädt im IE eine Site und übernimmt das Login. Das Skript von Raoul A. wurde erweitert und speichert einmal eingegebene Anmeldedaten in einer Datei (leider im Klartext)
QuellCode> GmxAutoLogin2.vbs
QuellCode> GmxAutoLogin2009.vbs
QuellCode> GmxAutoLogin2010.vbs
war erforderlich, weil die Login-Seite von GMX (wieder einmal) verändert wurde.

QuellCode> HDD-Test-Kopieren.vbs
kopiert ein Verzeichnis auf ein anderes Laufwerk und zeigt dabei jetzt eine Verlaufs- bzw. Fortschrittsanzeige an. Dabei werden die benötigte Zeit gemessen und die übertragene Datenmenge bestimmt, um die Übertragungsrate in MB/s zu ermitteln. Dies wird entsprechend protokolliert. Alternativ kann eine RAM-Disk als Quelle angegeben werden, damit die Lesegeschwindigkeit das Ergebnis nicht beeinflusst (Q257405 - W2k-RAM-Disk / NT4-RAM-Disk). Die Fortschrittsanzeige wird unter Sub/Function erklärt.

QuellCode> hintergrundbild.vbs
ändert und aktualisiert das Hintergrundbild des Desktops - auch Wallpaper genannt.
Hintergrundbild mit JPGs (mit automatischem, zufälligem Wechsel) bei http://heise.de/ct.


QuellCode> HistoryFavoritesLoeschen.vbs
löscht u.a. die Temporary, History- und Favoriten-Verzeichnisse. Dazu müssen noch die entsprechenden fso.DeleteFolder - Zeilen frei gegeben werden.

QuellCode> html2txt.vbs
'zieht' eine Internetseite und speichert diese (den Quelltext; ohne Bilder, ohne CSS) in eine Datei.

QuellCode> htmldateispeichern.vbs
 Function getURL( url, un, pw )  von cmdr 'zieht' den Inhalt einer Internetseite (den Quelltext; ohne Bilder, ohne CSS). Im Skript wird der Inhalt einer Seite in einer MsgBox angezeigt und der Inhalt einer anderen als HTML-Datei lokal gespeichert und (mit .Run) aufgerufen (und dadurch im als Standard definierten Browser angezeigt).

QuellCode> http-server-test.vbs
zieht in regelmäßigen Abständen eine bestimmte HTML-Seite z.B. aus dem Internet und prüft, ob ein bestimmtes Word enthalten ist.

QuellCode> httpget.vbs
 Function HttpGet( url ) 
Im Skript wird als Beispiel das aktuelle Wetter (und weitere Daten) von http://www.webservicex.net/globalweather.asmx für Berlin abgefragt, in eine XML-Datei gespeichert und angezeigt. Welche Abfragen vom Webservice angenommen werden, erfährt man, wenn man diese Adr. mit einem Browser aufruft.

QuellCode> icq5-verlauflesen.vbs
von mike-winxp@gmx.de: Eine XML-Verlaufsdatei von ICQ5 einfach auf das Script ziehen und fallen lassen.
QuellCode> icq6-verlauflesen.vbs
von mike-winxp@gmx.de: Skript zum Lesen einer Verlaufsdatei (von icq6; ICQ v6.x). Dazu einfach die "Messages.mdb"-Datei auf das Script ziehen und fallen lassen. Die Datei befindet sich (unter WinXP):
C:\Dokumente und Einstellungen\[UserName]\Anwendungsdaten\ICQ\[ICQ Nummer]\Messages.mdb
bzw. %APPDATA%\ICQ\[Ihre ICQ Nummer]\Messages.mdb

QuellCode> IE-Start.vbs
testet mit dem Ping-Befehl, ob der Router im Netzwerk antwortet - wenn ja, testet das Skript, ob ein DNS erreichbar ist - wenn ja, wird der MS&InternetExplorer gestartet. Sinnvoll ist dies im Heimnetzwerk, wenn der Router z.B. ein fli4l-Disketten-Router mit analogem Modem ist.

QuellCode> InternetTest.vbs
ermittelt, ob das Internet verfügbar ist, in dem es testet, ob eine URL erreichbar ist. Gegenüber dem Ping-Befehl (wie in IE-Start.vbs) funktioniert das auch hinter / vor einem Proxy.

QuellCode> ip-adresse.vbs
zeigt den PC-Namen und alle IP-Adressen des (lokalen) PCs an, auf dem das Skript gestartet wurde. Je nach Betriebssystem (Win9x/ME oder Win2k/XP) wird IPCONFIG oder WINIPCFG verwendet.
QuellCode> ip-adresse2.vbs
Der Code ist prinzipiell der selbe wie in ip-adresse.vbs. Im Unterschied dazu sind die entscheidenden Zeilen in eine Function-Prozedur ausgelagert. So kann der Code problemlos in andere Skripte übernommen werden.
QuellCode> ip-adresse3.vbs
In diesem Skript ist alles anders: Damit die IP-Adresse mit IPCONFIG ermittelt werden kann, ohne dass eine Schreiboperation auf einen Datenträger erfolgt, werden im 'unsichtbaren' Aufruf von QuellCode> exechiddenplus.vbs
alle IPCONFIG-Ausgaben abgefangen und ausgewertet.
QuellCode> wmi-ip-adresse.vbs
 Function wmiIPadr( PCName )  ermittelt alle IP-Adr. mit WMI.

QuellCode> IP-aus-Name.vbs
ermittelt die IP-Adresse aus einem (DNS-) PC-Namen, in dem ein PING ausgeführt, die Ausgaben/Anzeigen davon in eine Datei umgeleitet und diese dann ausgewertet werden.
QuellCode> IP-aus-Name2.vbs
 Function IPAdr( PC )  benutzt die WSHShell.Exec-Methode, schreibt also keine Datei.

QuellCode> ipNetz-loginScr.vbs
ist das Ergebnis einer Newsgroup-Anfrage. In einem Netzwerk mit mehreren IP-Netzen (z.B. 192.168.150.xxx und 192.168.151.xxx) sollen für PCs, je nachdem in welchen IP-Netz sich der PC befindet, ein anderes Login-Skript ausgeführt werden. (Als Login-Skripte sind unter WinNT/2k nur *.bat und *.cmd Dateien möglich. Von dort aus lassen sich *.vbs - Skripte mit 'wscript skript.vbs' aufrufen.)

QuellCode> immerwieder.vbs
startet in regelmäßigen Abständen verschiedene Skripte. Z.B. 10.vbs nach 10s, 70s, 130ecs . . . (oder 10min, 70min, 130min . . .) ab Skriptstart gezählt.
QuellCode> zeitgestaffelt.vbs
startet in regelmäßigen Abständen verschiedene Skripte. Z.B. 10.vbs um 08:07:10, 08:08:10, 08:09:10 . . . (oder 08:10:00, 09:10:00, 10:10:00 . . .), also nach einer vollen Minute (Stunde).

QuellCode> kontext-anzahlzeichenimpfad.vbs
Im Kontext-Menü des Windows-Explorers wird ein Eintrag hinzugefügt durch den die Anzahl der Zeichen des Pfades zu einer Datei bzw. zu einem Verzeichnis ermittelt und angezeigt wird.
Beim direkten Aufruf des VBS wird geprüft, ob es bereits 'installiert' ist - wenn ja, wird eine 'Deinstallation' angeboten.

QuellCode> kontext-commandprompthier.vbs
erweitert das Kontextmenü um einen Eintrag 'Command Prompt hier'. Durch den Klick mit der rechten Maus-Taste auf ein Verzeichnis und der Auswahl 'Command Prompt hier' öffnet eine Eingabeaufforderung (DOS-Prompt) mit bzw. in diesem Verzeichnis.

QuellCode> kontext-erweiterungenanzeigen.vbs
 Function Kontext( PC )  listet die Einträge, die für die zusätzlichen Optionen des Kontextmenüs für Verzeichnisse (Klick mit der rechten Maus-Taste auf einen Ordner) oder Dateien hinterlegt sind.

QuellCode> kontext-pfadinzwischenablage.vbs
Im Kontext-Menü des Windows-Explorers werden zwei Einträge hinzugefügt.
 1.  "Pfad (Netzpfad) in die Zwischenablage kopieren" - aus dem Pfad zu einer Datei / zu einem Verzeichnis wird versucht den Netzpfad zu ermitteln und in die Zwischenablage kopiert:
C:\Windows\System32\calc.exe (auf "MeinPC.Heim.Netz") wird zu
    \\MeinPC\c$\Windows\System32\calc.exe
    Fehlt c$, bleibt es bei C:\Windows\System32\calc.exe
D:\AutoRun.inf (CD-Laufwerk auf "PC003.geht.net") wird zu
    \\PC003\d$\AutoRun.inf
    Fehlt d$, bleibt es bei D:\AutoRun.inf
Z:\Sicherung\08-02-13\wichtig.zip (auf "Server1.home.net") wird zu
    \\Server1\Sicherung\08-02-13\wichtig.zip
\\Server1\Sicherung\08-02-13\wichtig.zip bleibt bei
    \\Server1\Sicherung\08-02-13\wichtig.zip
 2.  "Pfad (Laufwerk) in die Zwischenablage kopieren" - der Pfad zu einer Datei / zu einem Verzeichnis wird unverändert in die Zwischenablage kopiert.
Werden mehrere Dateien / Verzeichnisse übergeben, wird nur ein Parameter verwendet (der erste oder der letzte). Beim direkten Aufruf des VBS wird geprüft, ob es bereits 'installiert' ist - wenn ja, wird eine 'Deinstallation' angeboten.

QuellCode> kontext-unc2clipbrd.vbs
von Peter Ackermann erweitert das Kontextmenü um einen Eintrag 'UNC-Pfad in die Zwischenablage kopieren'. Durch einen Klick mit der rechten Maus-Taste auf ein Objekt im WindowsExplorer wird der komplette Pfad (zur Datei / zum Verzeichnis; inkl. Datei- / Verzeichnisname) in die Zwischenablage kopiert.
QuellCode> kontext-pfadnachzwischenablage.vbs
ist das gleiche Skript, nur fehlen hier die spitzen Klammern, die den Pfad in 'umgeben'.

QuellCode> LastLogon.vbs
zeigt von einem Computer den Benutzer an, der zuletzt angemeldet war bzw. noch angemeldet ist. Das Skript setzt Regobj.dll voraus.
QuellCode> WMI-UserIsLogon.vbs
 Function UserIsLogon( PC )  ermittelt, wer gerade an einem PC angemeldet ist.

QuellCode> laufwerk-c.vbs
 Function FestplattenTest( Lw )  zeigt wieviel Speicher auf Laufwerk C: noch frei ist.

QuellCode> LaufWerkListe.vbs
zeigt zu allen Laufwerken den Typ, die Größe und den freien Speicherplatz an und schreibt dies in eine Protokoll-Datei - jetzt ohne Fehler bei Laufwerken über 32GB.
QuellCode> LaufWerkListe2.vbs
 Function LwListe()   zur leichteren Verwendung in anderen Skripten.

QuellCode> laufwerksbuchstabefrei
 Function LwFrei()  ermittelt den ersten freien Laufwerksbuchstaben.

QuellCode> wmi-lfddienste.vbs
 Function LfdDiensteLst()  schreibt alle Dienste (mit allen 'Unter-Diensten') in eine .CSV-Datei - der Separator ist ";". Die Prozedur verursacht einige 10s (20..80s) 100% CPU-Last.

QuellCode> LfdProzess-Kill.vbs
Das Skript erwartet 3 oder 4 Parameter ( ProzessName MeldungsText AnzahlDerMeldung Kill ):
  LfdProzess-kill.vbs IExplore.exe "Bitte den Internetexplorer beenden!" 3
  LfdProzess-KiLL.vbs IExplore.exe "Bitte den Internetexplorer beenden!" 3 KilL
Das Skript prüft alle 30s, ob die Anwendung noch läuft - wenn ja, fordert es den Anwender mit "MeldungsText" auf, die Anwendung zu beenden. Ist die Anwendung nach "AnzahlDerMeldung" immer noch aktiv, beendet sich das Skript ohne Aktion. Enthält der 4. Parameter "KILL", wird die Anwendung bzw. sein Prozess beendet (ge-kill-t, abgeschossen). Die meiste 'Arbeit' übernehmen dabei zwei Prozeduren:
 Function LfdProzessTest( ProzessName ) 
 Function LfdProzessKill( ProzessID ) 

QuellCode> wmi-lfdprogramme.vbs
 Function LfdProgrList()  listet alle laufenden Programme / Prozesse. Die Prozedur ist in eine Do..Loop-Schleife eingebunden und wird dadurch innerhalb von 30min zu jeder vollen Minute aufgerufen. In die LOG-Datei erfolgen nur Einträge, wenn sich die Liste der laufenden Programme geändert hat.

QuellCode> LinkInSendTo.vbs
 Function AutoStartLink( SendToLink )  Ist diese Prozedur in einem Skript enthalten und wird bei jedem Skriptaufruf ausgeführt, verhält sich das Skript wie folgt:
beim ersten Aufruf: Das Skript kopiert sich in den Ordner "c:\programme\dieseyer.de\".
Ein Link (mit '-Install'-Parameter) zu diesem Skript wird im Autostart-Ordner (All Users) angelegt, damit nach jeder User-Anmeldung ein Link im (User abhängigen) 'SendTo'-Ordner eingefügt wird.
Das Skript setzt einen Link im 'SendTo'-Ordner (des zur Zeit angemeldeten Users).
beim Aufruf durch Autostart: (mit '-Install'-Parameter) wird ein Link zu diesem Skript im 'SendTo'-Ordner (des zur Zeit angemeldeten User) angelegt.
beim Aufruf durch 'Senden an' bzw. 'SendTo':: Man kann jetzt im Explorer Datei(en) markieren und (dann durch Klicken mit der rechten Maus-Taste und über 'Senden an') die markierten Dateien an das Skript übergeben.

QuellCode> WMI-ListServices.vbs
von U. Janke listet alle Services eines Rechners.
 
QuellCode> logdatei.vbs
Enthält vier Prozeduren zum Erstellen bzw. Erweitern von LOG-Dateien.
Um laufende VBS-Skripte zu beobachten lassen sich zwei Ansätze verwenden:
1.   Die Skripte werden mit CSCRIPT.EXE gestartet und laufen dadurch in einer Art 'DOS-Fenster' (schwarzer Hintergrund mit weißem Text). Jede WScript.Echo-Meldung des Skripts erscheint im Fenster und schiebt ggf. die letzten Meldungen nach oben. Die Beispielskripte von MS (u.a. in der Scripting-Hilfe und im 'Portable Script Center') sind so programmiert. Der Nachteil: Sind die Meldungen aus dem Fenster 'raus gelaufen' oder ist das Fenster geschlossen, lässt sich nicht mehr nachvollziehen, was einmal geschehen ist.
2.   Die Skripte schreiben LOG-Dateien.
Um LOG-Dateien während der Skript-Abarbeitung zu beobachten, sind LOG-Parser erforderlich, die die Anzeige aktualisieren, wenn das Skript eine Zeile hinzufügt. Zwei LOG-Parser seien hier genannt: baretail.exe (vergl. baremetalsoft.com) und trace32.exe (vergl. "MS KB272436" bzw. den "SMS Tools") - auf letzteres soll näher eingegangen werden:
trace32.exe zeigt einzelne, umfangreiche LOG-Einträge (einer Zeile) in einem (Status-) Fenster an. Wird das Trace32-Format verwendet, kann trace32.exe Zeilen (z.B. mit Fehlermeldungen) in zwei unterschiedlichen Hintergrundfarben anzeigen. Dazu muss in der LOG-Zeile ein ErrType definiert werden:
   1 - normal (weißer Hintergrund)
   2 - Zeile mit gelben Hintergrund; z.B. für Warnungen
   3 - Zeile mit rotem Hintergrund; z.B. für Fehler- / Error-Meldungen
Allerdings sind LOG-Dateien im Trace32-Format nur mit trace32.exe lesbar. Und ist ein LOG-Eintrag bzw. eine LOG-Zeile nicht im Trace32-Format, zeigt trace32.exe mitunter keine weiteren Zeilen nach dem Formatfehler an.
Die folgenden Prozeduren schreiben passende LOG-Dateien. Außerhalb der Prozeduren sollte eine Variable 'LogDatei' definiert werden und den kompletten Pfad zur LOG-Datei enthalten. (Die Prozeduren schreiben sonst eine LOG-Datei in das Verzeichnis, in dem sich das Skript selbst befindet.) Und: Natürlich sind Skripte die LOGs schreiben langsamer!
 Sub Trace32Log( LogTxt, ErrType )  schreibt eine LOG-Datei im Trace32-Format und erwartet beim Aufruf zwei Parameter, wobei der zweite als ErrType die Hintergrundfarbe für die Anzeige mit trace32.exe definiert - zusätzlich:
   0 - löscht die LOG-Datei und erstellt eine neue.
Die Prozedur ist ohne Anpassung in HTA und VBS verwendbar.
 Sub LogTrace32( LogTxt )  Filter in der Prozedur ermitteln aus LogTxt einen errType für die Anzeige mit trace32.exe. Ist LogTxt leer ( "" ), wird eine neue LOG-Datei erstellt
 Sub LogEintrag( LogTxt )  schreibt eine 'normale' LOG-Datei, die nicht nur mit einem LOG-Parser sondern auch mit Notepad lesbar ist. Am Zeilenanfang (also vor den Inhalt von LogTxt) wird die aktuelle Zeit mit Datum eingefügt. Ist LogTxt leer ( "" ), wird eine neue LOG-Datei erstellt.
 Sub LogText( LogTxt )  ist ein 'Einzeiler' ohne jeden Schnick-Schnack
Die Einträge in LOG-Dateien lassen sich besser dem Code zuordnen, wenn die Zeilennummer an die Prozedur mit übergeben wird. Um diese im gesamten Code zu aktualisieren, bietet sich sendenan-sicherung.vbs an.
QuellCode> trace32log.vbs
Im Gegensatz zu "logdatei.vbs", die 'nur' (Beispiel-) Prozeduren für den Einsatz in VBS-Dateien enthalten, kann dieses Skript z.B. aus Batch-Skripten heraus aufgerufen werden - Batch-Skripte selbst können nur sehr umständlich LOG-Dateien im Trace32-Format schreiben.
trace32log.vbs erwartet drei Parameter:
1. ErrType:
   0 - löscht die LOG-Datei und erstellt eine neue.
   1 - normale (weißer Hintergrund)
   2 - Zeile mit gelben Hintergrund
   3 - Zeile mit rotem Hintergrund
2. LOG-Datei: In diese wird der Eintrag vorgenommen; dieser Parameter muss von " (Anführungszeichen) umschlossen sein.
3. LogTxt: Die Zeichenkette (mit Leerschritten) nach dem letzten " wird als Text in die LOG-Datei geschrieben.
Beispiele für trace32log.vbs - Aufrufe aus einer Batch heraus (siehe auch log.cmd):
trace32log.vbs 0 "c:\temp\bsp.log" neue LOG-Datei
trace32log.vbs 1 "c:\temp\bsp.log" normaler LOG-Eintrag
start trace32log.vbs 3 "%~dpn0.log" ein roter LOG-Eintrag
trace32log.vbs 2 "%~dpn0.log" ein gelber LOG-Eintrag
trace32log.vbs 3 "%~dpn0.log" 12 :: ein "roter" LOG-Eintrag
In einer Batch ergibt "%~dpn0.log": "c:\tst\xx.cmd" => "c:\tst\xx.log" bzw. "\\srv1\Share9\bsp\1.cmd" => "\\srv1\Share9\bsp\1.log"
   d - Laufwerksbuchstabe mit Doppelpunkt (Drvive; hier "C:")
   p - Pfad (Path; hier "\tst\"")
   n - Dateiname (Name; hier "xx")
   x - Erweiterung mit Punkt (eXtension; hier ".cmd")
   0 - bezieht sich auf die aktuelle Datei (c:\tst\xx.cmd)
Diese und weitere Parameter werden durch "call /?", "If /?" oder "cmd /?" in einer Eingabeaufforderung (DOS-Box) angezeigt und z.T. erklärt.

QuellCode> lokalegruppen.vbs
 LokaleGruppen( PCname )  zeigt die auf dem PC lokal verfügbaren Gruppen (u.a. "Administratoren") und wer oder was Mitglied in den lokalen Gruppen ist.

QuellCode> MAC-Adr.vbs
gibt unter WinNT/2k/XP die MAC-Adr. der Netzwerkkarte(n) aus.
QuellCode> MAC-Adr2.vbs
Bei mehreren NIC wird die letzte MAC-Adr. ausgegeben, die nicht mit "169." beginnt. (Alles schön in eine Function-Prozedur verpackt.)
QuellCode> mac-adr3.vbs
 Function WMIMACadr( PC ) 
gibt die MAC-Adr. der aktiven Netzwerkkarte(n) zurück.

QuellCode> MemberOfADGroup.vbs
 Function MemberOfGroup( PCObjAD )  aus 'The Portable Script Center - Version 3.0, November 2004': "List the Active Directory Groups a User Belongs To"

QuellCode> mp3-BitRate-Change.vbs
wandelt alle mp3-Dateien im aktuellen Ordner in Dateien mit einer anderen BitRate um. Dazu am Besten das Skript auf den Desktop (LAME muss c:\lame.exe sein) ablegen, den (Windows-) Explorer nicht! im Vollbild-Modus starten und die Verzeichnisse mit der Maus auf das Skript ziehen und fallen lassen . . . Die Dateinamen der ALTEN Dateien enden mit ".mp3-".
QuellCode> mp3-BitRate-Change2.vbs
Es werden auch die Dateien in Unterverzeichnissen (nicht Unter-, Unter-, . .  -verzeichnissen) umgewandelt.

QuellCode> nachrichtverstecken.hta
von mike-winxp@gmx.de versteckt Nachrichten oder Textdateien in anderen Dateien. Hierbei wird die Nachricht zunächst mit einem beliebigen Passwort verschlüsselt (einfacher Algorithmus für niedrige Sicherheitsansprüche) und anschließend an eine vorhandene Datei (z.B. "FeteAmBaggersse.JPG") angehängt - die Tarnung ist perfekt. Für vertrauliche Nachrichten lässt sich ein Text verschlüsseln.

QuellCode> NetzLaufWerkeDetails.vbs
zeigt zu jedem Netzlaufwerk-Laufwerksbuchstaben den Server und den Freigabenamen an.

QuellCode> NetzVerb-zu-Server.vbs
ermöglicht die Verbindung zu einem Server in einer anderen Domäne mit einem anderen Anmeldenamen. Aber das Passwort muss gleich sein! In einem sehr großen Netz melden sich die Benutzer am PC mit 'PCDom\Name' und zur Serververwaltung am Server mit 'ServerDom\Server-Name' an. Dem normalen Anmeldenamen ist 'Server-' voran zu stellen, so dass der Anmeldenamen 'PMaier' zu 'Server-PMaier' wird. Falls der Server beispielsweise bereits für das Home-Laufwerk verwendet wird, muss diese Verbindung vorher getrennt werden. Zur Server-Verwaltung mit SrvMgr oder UsrMgr ist auch 'IPC$' einsetzbar.

QuellCode> wmi-netzwerkeigenschaften.vbs
Listet die Netzwerkeigenschaften von (remote) PCs - hier die IP-Adressen von 192.168.1.20 bis 192.168.1.22. Protokoll am Besten mit baretail beobachten.

QuellCode> now.vbs
überschreibt die now()-Methode und gibt die Zeit auf zwei Stellen nach dem Komma genau zurück - z.B. 10.10.2005 10:10:55,88.
Siehe auch
QuellCode> 10ms.vbs

QuellCode> wmi-NumLock-ein.vbs
schaltet NumLock für den Anmeldedialog ein (Vergl. support.microsoft.com ID=154529. Das besondere: Zum Setzen eines Wertes in die Registry wird nicht RegWrite sonder WMI benutzt.

QuellCode> offenedateien.vbs
listet geöffnete Dateien.

QuellCode> Ordner-Leeren.vbs
leert ein Verzeichnis, in dem die enthaltenen Dateien in einen anderen Ordner kopiert werden. Gibt es dort bereits Dateien mit gleichen Namen, wird eine dreistellige Zahl vor der Dateiendung eingefügt. Unterordner werden nicht abgearbeitet.

QuellCode> ordnervergleich.vbs
von W. Schmelz vergleicht zwei ausgesuchte Ordner über ihrem Gesamt-Inhalt. Dabei wird untersucht, ob in beiden Ordnern alle Unterverzeichnisse vorhanden sind und die gleiche Größe haben. Außer den evtln. Unterverzeichnissen wird die Anwesenheit der einzelnen Dateien verglichen und, ob diese Dateien in Datum und in Größe übereinstimmen. Sind irgendwo Unterschiede, erfolgt eine Meldung. Es sind Ordner mit oder ohne Unterverzeichnisse prüfbar.

QuellCode> patchlist.vbs
listet die aktuell installierten MS-Patche.

QuellCode> pc-aus-W9x.vbs
QuellCode> pc-restart-w9x.vbs
startet Scandisk und die Defragmentierung für alle Laufwerke und schaltet den (ATX-) PC aus bzw. veranlasst einen Neustart - natürlich nur bei Win9x.
QuellCode> W2kRestart.vbs
QuellCode> W2kShutDown.vbs
verwendet SendKeys. Das funktioniert nur, wenn der Desktop vorhanden, also jemand angemeldet ist.
QuellCode> wmi-pcreboot.vbs
sendet mit WMI eine Reboot-Aufforderung an einen PC.

QuellCode> PC-ein-Test.vbs
das Script prüft alle 60s per PING, ob ein PC eingeschaltet ist. Der Test beendet sich selbst, wenn die .run - Datei gelöscht wird. Der Vorteil gegenüber einem (Dauer-) Ping:
1. Es erscheint nur eine Meldung, wenn der PC auf Ping antwortet.
2. Ändert sich die IP-Adr. (durch DHCP), wird die neue IP-Adr. (durch DNS) auch neu aufgelöst.

QuellCode> pc-im-ad.vbs
 Function PCimAD( AD, PCname )  gibt den 'distinguishedName' eines PCs zurück - also etwas in der Art "LDAP://cn=MyBigPC,ou=Management,dc=NA,dc=fabrikam,dc=com". Das AD wird dazu nicht mit einer For..Each-Schleife durchlaufen, bis der PC gefunden wird, sonder es wird 'direkt' gefragt.

QuellCode> pc-info.vbs
von sk0r sammelt verschiedene Infos über den PC, auf dem das Skript gestartet wurde.

QuellCode> pc-analyse.vbs
von W. Schmelz analysiert auf WinXP-PCs Festplatten, USB- und DVD-Laufwerke, ermittelt Laufwerks- und RAM-Belegungen, das wichtige zur CPU, die Windows - Version, das Windows - Verzeichnis, den registrierten 'Eigentümer' und Daten über die Grafikkarte. Die Informationen werden in "PC-Analyse.vbs.txt" geschrieben, die Datei geöffnet und anschließend gelöscht.

QuellCode> pckonfiguration-wintuc.vbs
QuellCode> pckonfiguration-wintuc_fwmgr.vbs
von ~~~Dexter~~~. muss mit lokalen Admin-Rechten auf einem PC ausgeführt werden, um diesen aus der Ferne (remote) verwalten zu können. Aus Sicherheitsgründen sind in kleineren Arbeitsgruppen und im Heimnetzwerk Fernzugriffsrechte eingeschränkt und benötigte Dienste deaktiviert. Das Skript korrigiert dies; es ist Bestandteil des WinTuC.de-Projekts.

QuellCode> PCmitDHCP.vbs
ermittelt, ob ein PC mit oder ohne DHCP arbeitet. Wird das Skript im LoginScript aufgerufen, gibt die LOG-Datei eine Übersicht zu allen PCs.

QuellCode> wmi-pcname-aus-ipadr.vbs
 Function PCname( IPAdr )  ermittelt aus einer AP-Adresse per WMI den dazugehörigen PC-Namen.

QuellCode> PermanentPopup.vbs
 Sub PermanentPopUp( SkriptName, Text )  erzeugt ein Tochterskript und startet dieses. Das Tochterskript meldet sich immer wieder mit einem PopUp, solange es das Tochterskript (als Datei) noch gibt. Das Hauptskript kann das Tochterskript löschen und so erneute PopUp-Meldungen unterbinden. Hier wird der Umstand ausgenutzt, dass ein Skript vor der Ausführung komplett geladen wird.

QuellCode> wmi-ping.vbs
gibt 'kurzfristig' zurück, ob ein PC erreichbar ist - auf jeden Fall erheblich schneller als ein 'normaler' PING-Aufruf! Die enthaltene Prozedur gibt 'True' oder 'False' zurück. Damit erklärt sich der Aufruf von selbst:   If WMIpingOK( ZielPC ) Then  

QuellCode> pclistetesten.hta
erwartet eine pclistetesten.ini, in der eine Liste von IP-Adr. hinterlegt ist, die (ständig) durch die Prozedur WMIpingOK auf Erreichbarkeit geprüft werden sollen. Dies ist eine Antwort (von mir) zu einer Frage auf administrator.de - dort sind auch ein paar (bessere) Alternativen zu finden . . .

QuellCode> popup-meldung.vbs
ich brauche immer mal wieder ein aufrufbares PopUp . . . hier ist ein entsprechendes VBS mit 10s.

QuellCode> PopsUp.vbs
 Function PopsUp( Txt, Dauer )  ist das 'wsentliche' und erstellt ein (Tochter-) Skript, das es mit WSHShell.Exec (statt mit WSHShell.Run) aufruft. Dadurch kann das (Mutter-) Skript während der Meldung weiter laufen. Mit WSHShell.Exec (statt mit WSHShell.Run) gestartete Programme lassen sich (beim wiederholten Aufruf der 'Function PopsUp') gezielt mit der .Close-Eigenschaft 'killen'. Funktioniert mit Leerzeichen im Dateinamen des startenden Skripts. Die Prozedur ist ohne Anpassung in HTA und VBS verwendbar.

QuellCode> ProgrammAuswahl.vbs
wechselt zwischen 2 Programmen, von denen immer eines gestartet sein soll.
Programmauswahl bei Doppelklick auf eine Datei bei http://heise.de/ct.

QuellCode> ProgrammSchliessen.vbs
demonstriert die Verwendung der AppActivate- und der SendKeys-Methode. Bei vielen Programmen greift die AppActivate-Methode, wenn die ersten Zeichen mit denen in der Programmleiste angezeigten übereinstimmt. Gibt es mehrere laufende Programme, die z.B. mit "explorer" (in der Programmleiste) beginnen, ist wohl die Taskreihenfolge entscheidend. Groß- / Kleinschreibung wird von der AppActivate-Methode ignoriert. Wenn die Anwendung von der AppActivate-Methode nicht gefunden wird, wird auch kein [Alt-F4] (an die aktuell aktive Anwendung) gesendet.
QuellCode> ProgrammMinimieren.vbs
per SendKeys-Methode . . .

QuellCode> progrs-nacheinander-starten.vbs
(Percent Processor Time)
QuellCode> progrs-nacheinander-starten2.vbs
(Handle Count)
QuellCode> progr-cpu-last-test.vbs
Soll ein weiteres Programm gestartet werden, sobald ein (anderes, vorher gestartetes) Programm vollständig geladen ist, reichen zur Steuerung WSH- bzw. VBS-Bordmittel nicht aus. Zur Kontrolle des Ladeverhaltens eines Programms eignet sich progr-cpu-last-test.vbs. Die dabei entstehende "progr-cpu-last-test.log"-Datei lässt Schlüsse darüber zu, wie lange ein spezielles Programm zum vollständigen Laden benötigt. Für gewöhnlich wird man die Auslastung der CPU als Kriterium für das Starten eines Programms verwenden. Möglicherweise lassen sich aber die Informationen "Handle Count" sicherer verwenden - manche Programme verringern diese Anzahl (etwas), wenn der Start abgeschlossen ist.

QuellCode> prozedurintxt.vbs
 Function ProzedurInTxt( ProzName )  übergibt (aus dem aktuellen VBS) den Inhalt einer Prozedur, um einfach aus Skripten heraus neue Skripte mit Sub- oder Function-Prozeduren zu erstellen - die dabie erforderlichen 'spielereien' mit den Anführungszeichen übernimmt dabei das Skript.

QuellCode> ramnutzung.vbs
 Function SpeicherNutzung( PC ) 
zeigt die aktuelle Arbeitsspeicher-Nutzung für denīRAM (realer Arbeitsspeicher) und den virtueller Arbeitsspeicher (inkl. Summe der Auslagerungsdatei(en)-Größe)

QuellCode> RegKey
"This script demonstrates how to create and delete registry keys" von der MS-Site.

QuellCode> wmi-regkeywrite.vbs
zeigt das Lesen und Schreiben (einfacher) Registry-Werte.

QuellCode> remotewinversion.vbs
 Function WMIWinVer( PC )  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und gibt neben der Windows-Version das Installationsdatum (für WinTuC formartiert) zurück.

QuellCode> remotesysdriveshare.vbs
 Function RemoteSysDriveShare( PCName )  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und prüft, nach dem das Systemlaufwerk ermittelt wurde (häufig 'C:'), ob die entsprechende administrative Freigabe (häufig '\\PCName\c$') erreichbar ist. Diese Prozedur ist so etwas wie die Steigerungsform von
 Function RemoteSystemDrive( PCName )  (nicht enthalten).
Normalerweise sollte man vor dem Aufruf dieser Prozedur die Erreichbarkeit des PCs z.B. mit der Prozedur
  If WMIpingOK( ZielPC ) Then   (nicht enthalten) prüfen.

QuellCode> remotesystemdrive.vbs
 Function RemoteSystemDrive( PCName )  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und gibt das Systemlaufwerk zurück - häufig 'C:', so wie auch in der Umgebungsvariable %systemdrive% verfügbar

QuellCode> remotewindir.vbs
 Function RemoteWinDir( PCName )  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und gibt das Windows-Verzeichnis zurück - häufig 'C:\Windows', so wie auch in der Umgebungsvariable %windir% bzw. %systemroot% verfügbar

QuellCode> remotesysrootshare.vbs
 Function RemoteSysRootShare( PC, )  ermittelt von dem entfernten System das Systemverzeichnis (%systemroot% bzw. %WinDir%; häufig C:\Windows) und prüft, ob dieses remote erreichbar ist ('\\[PCName]\C$\Windows').

QuellCode> remoteccmshare.vbs
 Function SMSCacheLocation( PC )  gibt den Pfad zum Cache zurück, der lokal vom 'SMS Advanced Client' verwendet wird.  Function RemoteCCMShare( PC, CacheLocation )  ermittelt aus der 'CacheLocation' (Standard bei einem PC mit 'SMS Adv. Cl.' ist 'C:\Windows\System32\CCM\Cache\') den remote ansprechbaren Pfad ('\\[PC]\C$\Windows\System32\CCM\Cache\') und berücksichtigt dabei, ob es sich um ein x64-Windows handelt ('\\[PC]\C$\Windows\SysWOW64\CCM\Cache\').

QuellCode> scriptenv.vbs
Vorsicht! Ich musste mein PC neu installieren . . .
"Gets versions of OS, WSH, WMI & ADSI on local machine and determines which are up-to-date."

QuellCode> scriptinfo.vbs
von Hansi Rau. Mit diesem Skript werden die VBS-Dateien eines Verzeichnisses und dessen Unterverzeichnisses in eine HTML-Datei gelistet, wobei die ersten Kommentarzeilen der Skripte als Info mit eingefügt werden. Läßt man das Skript auf meine Site los, sieht das so aus: scriptinfo.html

QuellCode> searchallmp3s.vbs
hat Michael Wende erstellt, um alle Festplattenlaufwerke nach .mp3- und .wma-Dateien zu durchsuchen und das Ergebnis in eine Datei "Alle MP3s vom " & Date & ".txt" (also mit aktuellem Datum) im Skript-Ordner zu speichern.
QuellCode> searchmp3text.vbs
sucht einen beliebigen Songtitel, Teil eines Songtitels oder Interpreten in der Datei "Alle MP3s vom " & Date & ".txt" und zeigt die gefundenen Resultate an. Falls der gewünschte Songtitel (Interpret) unter den gefundenen ist, kann man ihn mit dem Player seiner Wahl abspielen.
 
QuellCode> sendenan-sicherung.vbs
Das kennt jeder: Eine Datei wird mit Daten gefüllt und man will vor der Formatierung noch schnell eine (Daten-) Sicherung machen. Aus dem 'Schnell' wird nichts, da man sich durchaus ein paar Gedanken über Datensicherungen machen sollte:
- Wohin die Datei kopieren? Ich will sie ja evtl. wieder finden.
- Dateinamen belassen? Vielleicht will ich ja mehrere Sicherungen machen.
- Ein Sicherungsverzeichnis? Wie soll dann die zweite TEST.CMD heißen?.
Diese und andere Gründe haben mich dieses Skript schreiben lassen. Es nimmt über das Kontextmenü ('SendTo'- Verzeichnis) einen oder mehrere Dateinamen entgegen und speichert den kompletten Pfad dieser Datei (die BackSlash's - also die "\" - werden durch ³ ersetzt) und nummeriert diese fortlaufend. Als Zielverzeichnis sollte man ein (Netzlaufwerk-) Verzeichnis wählen, das professionell gesichert wird.
Am schnellsten macht man eine Zwischensicherung über [Datei][Speichern unter]. In der sich öffnenden Dateiauswahl klickt man mit der rechten Maus-Taste auf die gerade geöffnete Datei - das Kontextmenü wartet dort schon!
Zum Kennenlernen des Skripts: Einfach ausführen! Als Hilfe wird eine Parameterdatei erzeugt und mit Erklärungen angezeigt. Für verschiedene Dateiendungen lassen sich andere VOR-Zeichenketten und NACH-Zeichenketten 'um' die Zeilennummer herum definieren. Werden zwei Dateien übergeben, wird ein Datei-Vergleich angeboten, wobei das Skript die Zeilennummern vorher auf alles Neunen (z.B. 999) setzt.

Skript remote starten ist im Bereich WSH und WMI erklärt.
 
QuellCode> wmi-servicestarten.vbs
enthält folgende Prozeduren:
 Function ServiceStatus( Dienst ) 
 Function ServiceStarten( Dienst ) 
 Function ServiceStoppen( Dienst ) 
 Function ServiceAuto( Dienst )  mit starten des Dienstes
 Function ServiceManual( Dienst )  mit stoppen des Dienstes
 Function ServiceDeaktivieren( Dienst )  mit stoppen des Dienstes


QuellCode> skript-neustarten.vbs
Laufen auf einem Computer mehrere Skripte gleichzeitig und ununterbrochen (in Endlosschleifen), ist es schwierig, über den Taskmanager ein bestimmtes Skript zu beenden. Ist man gerade dabei, ein Skript mit Endlosschleife zu programmieren, ist es wünschenswert, dass sich das Skript bei Änderungen am Code 'selbst' neu startet.
Skripte werden beim Aufruf komplett geladen - Änderungen oder das Umbenennen (oder Löschen) beeinflussen die Skriptabarbeitung 'eigentlich' nicht. Genau diesen Umstand verwenden die folgenden beiden Prozeduren, in dem sie prüfen, ob sich der Skript-Code geändert hat oder das Skript umbenannt (oder gelöscht) wurde. Die Prozeduren brauchen bei jedem (Endlos-) Schleifen-Durchlauf nur aufgerufen werden:
 Sub VBSbeenden()  prüft, ob es sich selbst (WScript.ScriptFullName) noch gibt - wurde das Skript umbenannt (oder gelöscht), beendet es sich selbst.
 Sub VBSneustart()  prüft, ob sich das eigene Dateidatum (.DateLastModified) geändert hat. Dafür muss beim Skript-Start außerhalb der Prozedur eine Variable deklariert ('bekannt gemacht') werden. Beim ersten Aufruf der Prozedur erhält die (leere) Variable das aktuelle Dateidatum, das dann für die nächsten Prozeduraufrufe zum Vergleich zur Verfügung steht (weil die Variable außerhalb der Prozedur deklariert wurde).

QuellCode> SHELL32DLLversion.vbs
zeigt - wie der Name schon sagt - die Datei-Version der Shell32.dll an, die z.B. in Verlaufs- bzw. Fortschrittsanzeige beim Kopieren, verwendet wird.

QuellCode> shellapplicationnamespace.vbs
 Function ShellApplicationNamespace( )  ermittel alle verfügbaren 'Umgebungsparameter' - u.a.: Internet Explorer, Programme-Verzeichnis, Systemsteuerung (-Verzeichnis), 'Drucker und Faxgeräte' (-Verzeichnis), 'Eigene Dateien'-Verzeichnis, Favoriten-Verzeichnis, 'Zuletzt verwendete Dokumente'-Verzeichnis, Papierkorb (-Verzeichnis), Anwendungsdaten-Verzeichnis, Druckumgebung-Verzeichnis, 'Temporary Internet Files'-Verzeichnis, Cookies-Verzeichnis, Verlauf-Verzeichnis, 'Eigene Bilder'-Verzeichnis, Verwaltung-Verzeichnis, 'Gemeinsame Musik'-Verzeichnis . . .

Infos> sudoku.exe v7.4 sudoku.ex v7.4
löst Sudoku-Zahlenrätsel, bei denen in 9x9 Feldern in jeder Zeile, Spalte und jedem der 9 Teilquadrate die Zahlen von 1 bis 9 nur einmal auftauchen dürfen. Diese Rätsel sind seit kurzem der große Renner und sollen sogar süchtig machen! Zumindest W. Schmelz ist süchtig danach, das ganze mit VBS zu lösen . . .
Die sudoku.exe v7.4 herunterladen und starten. In dem Zielverzeichnis befindet sich nach dem Entpacken eine "[Zielverzeichnis]\Sudoku74\Setup.vbs". Durch deren Start 'landet' alles in "C:\Spiele\" - das Sudoku-Desktop-Symbol verweist auf "C:\Spiele\Sudoku\Desktop", in dem das "Sudoku-Feld.hta" zu staren ist. Danach: Viel Spass!
 
QuellCode> Sort-BubbleSort.vbs
QuellCode> Sort-HeapSort.vbs
QuellCode> Sort-QuickSort.vbs
sortieren die Zeilen einer Datei alphabetisch. Mein Beitrag zu diesen Skripten ist die Berücksichtigung bzw. Nichtberücksichtigung von Groß- und Kleinschreibung: Normalerweise werden alle! Zeilen, die mit einem Kleinbuchstaben beginnen, hinter den Zeilen mit Großbuchstaben am Zeilenanfang sortiert.
Einfach eine Datei auf das Skript fallen lassen. Im Skript werden alle Zeilen einer (ASCII-) Datei in ein Array gelesen, bevor das Sortieren in einer Function (ohne Festplattenzugriff) abläuft. Anschließend wird das sortierte Array in eine Datei geschrieben und angezeigt. Bei großen Dateien ist so ein Skript einige Zeit beschäftigt:
 Function bubblesort( arrTest )  benötigt für 10.000 Zeilen VBScript-Code (393KByte) knapp 7min mit 100% CPU-Auslastung.
 Function HeapSort( ByRef A )  schafft in ca. 50s und
 Function QuickSort( vntArray, intVon, intBis )  schafft in ca. 30s 100.000 Zeilen VBScript-Code (3,83MByte) mit 100% CPU-Auslastung - das Speichern des sortierten 100.000-Zeilen-Arrays dauert dann allerdings fast 3min. Diese Messwerte stammen von einem PIII 600MHz-System; auf einem "mobile AMD AthlonXP 1900+ (1.6GHz)" sind 100.000 Zeilen einer 4,4MByte-Datei von QuickSort in 17s komplett (mit speichern) erledigt.

QuellCode> sound-text-ausgabe.vbs
Enthält zwei Prozeduren:
 Sub PlayWaveVbs( WaveDatei )  zum Abspielen einer Wave-Datei ohne Player
 Sub TextSprechenVbs( Txt )  zum 'Sprechen' eines Textes

QuellCode> specialfolders.vbs
 CreateObject("WScript.Shell").SpecialFolders( i )  testet und zeigt an, welche Verzeichnisse sich mit dieser WSH-eigenen Prozedur ermitteln lassen - nicht alle sind bei MS dokumentiert:
  0:  C:\Dokumente und Einstellungen\All Users\Desktop
  1:  C:\Dokumente und Einstellungen\All Users\Startmenü
  2:  C:\Dokumente und Einstellungen\All Users\Startmenü\Programme
  3:  C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart
  4:  C:\Dokumente und Einstellungen\[%UserName%]\Desktop
  5:  C:\Dokumente und Einstellungen\[%UserName%]\Anwendungsdaten
  6:  C:\Dokumente und Einstellungen\[%UserName%]\Druckumgebung
  7:  C:\Dokumente und Einstellungen\[%UserName%]\Vorlagen
  8:  C:\WINDOWS\Fonts
  9:  C:\Dokumente und Einstellungen\[%UserName%]\Netzwerkumgebung
  10: C:\Dokumente und Einstellungen\[%UserName%]\Desktop
  11: C:\Dokumente und Einstellungen\[%UserName%]\Startmenü
  12: C:\Dokumente und Einstellungen\[%UserName%]\SendTo
  13: C:\Dokumente und Einstellungen\[%UserName%]\Recent
  14: C:\Dokumente und Einstellungen\[%UserName%]\Startmenü\Programme\Autostart
  15: C:\Dokumente und Einstellungen\[%UserName%]\Favoriten
  16: C:\Dokumente und Einstellungen\[%UserName%]\Eigene Dateien
  17: C:\Dokumente und Einstellungen\DuDarfst\Startmenü\Programme
Es gibt eine weitere WSH-eigenen Prozedur (GetSpecialFolder statt SpecialFolders):
 CreateObject("WScript.Shell").GetSpecialFolder( i ) 
  0:  C:\Windows
  1:  C:\Windows\System32
  2:  C:\Users\[%UserName%]\AppData\Local\Temp


QuellCode> spielchen.hta
Dieses Spielchen kennt wohl jeder . . . nur ich nicht.

QuellCode> split-test.vbs
Wenn das Trennzeichen für die Split-Funktion das Komma ist, in der zu zerlegenden Zeichenkette aber Dezimalzahlen (also auch mit Komma, aber mit Anführungszeichen eingegrenzt) enthalten sind, kann man es wie hier gezeigt machen.

QuellCode> Standarddrucker.vbs
zeigt den Standarddrucker.
QuellCode> wmi-standarddrucker.vbs
 Function AlleDrucker( PC )   Function Standarddrucker( PC ) 

standarddrucker.hta
holt die Auswahl eines Druckers als Standarddrucker auf den Desktop. Mit Hilfe und Installations- und Deinstallationsroutine. Besonders interressant: Das Icon für die Desktopverknüpfung ist im HTA hinterlegt. Und das alles ist von cmdr.

QuellCode> stoppuhr.vbs
von W. Schmelz - der Name ist Programm.

QuellCode> StringAnPositionInDateiTauschen.vbs
ersetzt an einer bestimmten Position in jeder Zeile einer Datei Zeichen oder löscht diese (also Spaltenweise). Es können alle Zeichen bis zu einer bestimmten Position, ab einer bestimmten Position oder zwischen zwei Positionen ausgetauscht bzw. gelöscht werden. Man kann so in einer Protokolldatei z.B. Tabulatoren einfügen, um sie dann in Excel öffnen zu können.

QuellCode> StringInDateiTauschen.vbs
arbeitet ähnlich wie ZeileInDateiTauschen.vbs, ändert aber nur einzelne Zeichen, nicht die ganze Zeile.

QuellCode> stringindatei-1.vbs
von W. Schmelz: Beliebige Datei auf dieses Programm ziehen und loslassen. Ein zu suchendes Wort eingeben: Groß- und Kleinschreibung (KeySensitiv) ist wichtig! Die Zeilen mit dem gesuchten Wort werden dann mit der Nummerierung angezeigt.
QuellCode> StringInDatei.vbs
sucht in einer Datei nach einer Zeichenkette und speichert jede Zeile, die diese Zeichenkette enthält, mit Zeilennummer in eine andere Datei.

Infos> stundenschlag.exe
(entpackt sich in einen Ordner) von W. Schmelz: Zum fehlerfreien Lauf muss sich "StundenSchlag.vbs" im gleichen Ordner wie "Uhr.wmf" und "Schlag.wav" befinden. Beim ersten Start werden alle drei Dateien nach "C:\Programme\Schmelz.W\Stundenschlag" kopiert und eine Verknüpfungen auf dem Desktop und eine Startdatei im Autostart abgelegt.
Mitgeliefert werden 3 Töne. "Schlag1.wav" ist ein leichtes "Ping", "Schlag2.wav" ist ein kräftiges "Pink", "Schlag3.wav" ist eine kräftige Glocke. Einfach den gewünschten Ton in "Schlag.wav" (die Zahl weglassen) umbenennen.

QuellCode> suchmaschine.vbs
von W. Schmelz sucht in grdprobl.txt nach Code-Schnipseln - W. Schmelz hat in dieser Datei die Lösungen zu 'seinen' Grundproblemen gesammelt.
QuellCode> vbstxtdocsuchmaschine.vbs
ist die 'Steigerungsform' - im aktuellen Ordner können z.B. alle .VBS-Dateien nach passenden Code-Schnipseln durchsucht werden.

QuellCode> suizid.hta
 Sub Suicide  löscht die HTA, in der sich diese Prozedur befindet, ohne dafür extra eine Hilfsdatei (VBS oder CMD) zu schreiben - auch von cmdr.

QuellCode> icon.vbs
In einem Hta kann ein Symbol (Icon) definiert werden, das dann - wie bei jeder Win-Anwendung - links im Rahmen der Anwendung und in der Taskleiste für die Anwendung angezeigt wird. Damit man das Symbol nicht als sepearate Datei mitgeben zu müssen, kann man es im Hta 'verstecken' - und das geht wie folgt: Man öffnet die Ico-Datei mit PSPad, das die Datei im HEX- Format anzeigt. Mit [Strg-a][Strg-c] befindet sich die gesamte Datei im HEX-Format in der Zwischenablage. Diese Zeichenkette wird hier im Beispiel der Variable Tst zugewiesen werden. Die Prozedur
 Sub IcoAusHexDaten( ZielDatei, HexDaten )  wandelt diese Zeichenkette und erstellt eine Ico-Datei. Allerdings wird aus einer 4KByte Ico-Datei wird eine 8KByte Zeichenkette.

SWinventar.vbs
ist eins der Skripte aus dem WSH-Inventar-Projekt und liest aus der Registry die Liste der installierten Software aus. Es wird also nur die Software gelistet, zu der eine Uninstall-Routine registriert ist.

QuellCode> syntax-ipadr.vbs
 Function GueltigeIPAdr( IP ) 
prüft mittels 'Regular Expression' (regulärer Ausdruck) die Gültigkeit (der Zahlenfolge) einer IP-Adresse. (Nach ~~~Dexter~~~)

QuellCode> syntax-pcname.vbs
 Function GueltigerPCName( Hostname ) 
von ~~~Dexter~~~ prüft mittels 'Regular Expression' (regulärer Ausdruck) die Gültigkeit (der Zeichenkette) eines PCNamen, der bekanntlich max. 15  Zeichen lang und keine Sonderzeichen enthalten darf.

QuellCode> terminemelden.vbs
Dieser "Wecker" von W. Schmelz verwendet keine Objekte und läuft deshalb in allen Win-Versionen, ist aber 'von Hand' auf den Desktop zu kopieren. Beim Start bleibt die "Suchschleife" bis zur Abschaltung des PC´s auf Lauer, ob Datum und Zeit für eine Meldung eingetreten sind. Das Melde-Protokoll wird nach einer Meldung gelöscht. Wegen ausgeschaltetem PC verpasste Meldungen werden beim Start dann natürlich verspätet angezeigt. Datum, Zeit und Meldungstext lassen sich ändern - oder löschen! Im H-t-a sind bis zu sechs Meldungen eintragbar; für weitere das Programm einfach erneut aufrufen. Keinerlei Gewähr für das korrekte Laufen des Programmes, d.h. keine Haftung für verpasste Termine!

QuellCode> TimeSet.vbs
ruft eine Atomuhr - http-Seite auf um dann die Systemzeit zu setzen, wenn diese max. 10min abweicht. (Ist bei Win2k bereits implementiert.) Lässt sich unter WinNT (automatisch z.B. täglich) als Dienst starten und schreibt ein Protokoll.

QuellCode> ToANSI.vbs
 Function ToANSI( ASCIIz )  wandelt die deutschen ASCII-Zeichen in ANSI-Zeichen. Werden die Ausgaben einer Eingabeaufforderung (DOS-Box, CMD-Box) an ein Skript übergeben, müssen die darin enthaltenen ASCII-Zeichen (ä, Ä, ö, Ö, ü, Ü und ß) in ANSI-Zeichen umgewandelt werden, die im gesamten Windows-GUI-Umfeld benutzt werden.
QuellCode> ToANSI2.vbs
 Function Asc2Ans( Txt, As2An )  von Jög Zühlke kann beides: ASCII in ANSI und ANSI in ASCII wandeln.

QuellCode> temp-hilfe.vbs
Da im Kopf eines Skripts häufig Erklärungen zur Funktion des Skripts hinterlegt sind, kann mit den Prozeduren
 Sub TempHilfeTxt( VBSDatei ) 
 Sub TempHilfeHta( VBSDatei ) 
eine Hilfe in ein beliebiges Skript integriert werden - angezeigt als TXT-Datei (in Notepad) oder als HTA-Datei (mit mshta.exe). Die Prozeduren erstellen eine temporäre Datei, in die der Kopf des Skripts eingefügt wird. Beginnen und enden muss dazu der Textbereich mit:
'*** (ein Hochkomma, gefolgt von 3 Sternchen)
oder
' *** (ein Hochkomma, ein Leerschritt, 3 Sterne)
Die TMP-Datei wird im %Temp%-Ordner des angemeldeten Users angelegt und nach dem Anzeigen gelöscht.
 Sub HilfeTxtDatei( ZielDatei ) 
Diese Prozedur schreibt den Kopf eines Skripts in eine Textdatei - z.B. "LiesMich.txt".

QuellCode> text-in-80-zeichen-je-zeile.vbs
von Michael Wende. Übernimmt man markierten Text aus dem Internet-Browser z.B. in Notepad, stören oft die fehlenden Zeilenümbrüche (Zeilen mit mehr als 100 Zeichen). Um die Darstellung auf max. 80 Zeichen pro Zeile zu begrenzen, entstand dieses Skript: es liest eine Datei ein und speichert diese mit max. 80 Zeichen pro Zeile.

QuellCode> TXTQuerDruck.vbs
kopiert Datei(en) zum Drucker, die dann im Querformat gedruckt werden. Die Druckerauswahl ist 'ausge-REM-t' - es wird immer nach LPT1: gedruckt. Jedes Zeichen der Datei(en) kommt beim Drucker an. Man sollte also nur ASCII-Dateien (z.B. Quelltexte; keine Word-Dokumente!) verwenden, sonst werden !!! HUNDERTE !!! Seiten mit Schwachsinn bedruckt.

QuellCode> TXTzumDrucker.vbs
kopiert Datei(en) zum Drucker. Nach der Druckerauswahl wird jedes!!! Zeichen der Datei(en) zum Drucker geschickt. Man sollte also nur PRN- oder ASCII-Dateien (z.B. Quelltexte; keine Word-Dokumente!) verwenden.
PRN-Dateien erstellen: Auf dem PC ist zum Standarddrucker ein weiterer, gleicher Drucker zu installieren, der aber in eine Datei (FILE:) statt auf LPT1: druckt. Wird jetzt ein Druckvorgang ausgelöst, erfolgt eine Abfrage, unter welchem Dateinamen der Druckauftrag abgespeichert werden soll. Diese Datei enthält dann das Image der Daten, die über die parallele Schnittstelle gehen würden. Ob das bei einem GDI-Drucker (WinPrinter) auch geht, konnte ich nicht testen.
Einige Scanner können, zusammen mit einem am PC angeschlossenen Drucker, als Kopierer genutzt werden. Auch diese Kopierer-Funktion des Scanners erstellt dann PRN-Dateien. Kopiert man TXTzumDrucker.vbs
in das 'SendTo'- Verzeichnis, können markierte Dateien über 'Senden an' ausgedruckt werden. - Ich habe das mal verwendet, um die zahlreichen Kopien für meine Bewerbungen mit einem Laserdrucker zu drucken.
QuellCode> TXTzuLPT1.vbs
kopiert eine Datei nach LPT1:.

QuellCode> usbporttest.vbs
gibt 'BESCHEID!', wenn sich an einem der USB-ports 'etwas' bewegt.

QuellCode> usertempverz.vbs
 Function UserTempVerz()  ist Bestandteil der Datei WinTuC_vbs.vbs des Projekts WinTuC.de und ermittel das temporäre Verzeichnis des aktuell lokal angemeldeten Users. Dieses Verzeichnis öffnet Windows, wenn über [Start] [Ausführen] '%temp%' oder '%tpm%' eingegeben wird. Unter einem System-Account, z.B. durch einen Dienst (Service) aufgerufen, ergibt der Prozeduraufruf '%windir%\temp' bzw. '%systemroot%\temp' also häufig 'C:\Windows\Temp'.

QuellCode> wmi-vbsalsservice.vbs
Das Skript zeigt, wie sich ein VBScript als Dienst eintragen lässt, der vor der Benutzeranmeldung gestartet wird. Richtige Dienste bzw. Services melden an den Dienstmanager "etwas" zurück. Einfache Skripte können dies nicht. Aus diesem Grund wird ein Skript gestartet, das ein anderes startet - der Dienstmanager beendet Dienste, die keine Meldungen an ihn zurück geben. Dieses Startskript "C:\test\VBSstart.vbs" besteht aus nur einer Zeile:
    CreateObject("Wscript.Shell").Run "C:\test\richtiges.vbs"
Am Ende des Skripts "wmi-VBSalsService.vbs" wird der Dienst auch gleich wieder entfernt.

QuellCode> vbseditor+.vbs
von W. Schmelz: Editoren gibt es viele! Mich reizte es aber, einen mit Mitteln des Hta zu schreiben! Im Explorer ist eine beliebige Datei wählbar. Ermöglicht wird dieses für "Txt", "Vbs", "Hta". Es wird hier mit eingebundenen Hta gearbeitet, welches die Zeilen der geladenen Datei anzeigt. Oder eine Datei auf dieses Vbs ziehen und fallen lassen Die Datei wird in nummerierten Zeilen abschnittweise angezeigt. Dabei ist außer "Abbruch" auch ein "Zurück" und natürlich "Weiter" möglich, sowohl für die angezeigten Zeilen als auch für die darin in einem Textfeld bearbeitbar angezeigte Zeile. Diese kann man abändern und die Änderung in der betreffenden " Datei " speichern. Ferner können eine beliebige oder eine neue, noch völlig leere Datei über den Explorer aufgerufen werden. Es können die Objekte Fso, Wss oder der Inhalt der Zwischenablage eingefügt und auf Wunsch widerrufen werden! Es kann auch ein bestimmtes "Wort" gesucht werden.

QuellCode> vbsbeimsystemstart.vbs
Das Skript erwartet beim Aufruf zwei Parameter: einen PC (-Namen) auf dem der Dienst "1Service" erstellt werden soll und ein Programm (-Name; z.B. 'mein.vbs' oder 'deine.cmd'), das beim Systemstart gestartet werden soll. Ist der entfernte PC erreichbar und sind die erforderlichen Rechte vorhanden, werden auf diesem
    - der Dienst "1Service" erstellt
    - das Skript 'VBSDienst1' geschrieben
    - das Skript 'VBSDienst' geschrieben
    - das Programm (in Variable 'VBSStart') dorthin kopiert
    - vorhandene Programmname.* - Datei(en) werden kopiert
(Fehlt 'VBSStart' wird als Demo eine VBS-Datei erstellt, die sich beim Dienststart meldet.) Der Dienst "1Service" startet das Skript 'VBSDienst1' auf dem entfernten PC (sofort und dann) bei jedem Systemstart vor einer Benutzeranmeldung - 'VBSDienst1' ruft 'VBSDienst' auf. Dieses prüft, ob der Dienst "1Service" entfernt oder ob das Programm 'VBSStart' aufgerufen werden soll - diese Steuerung ist in 'VBSDienst' implementiert und vom Vorhandensein verschiedener Dateien abhängig:
    - es existiert 'VBSStart' mit der Dateiendung (eXtension) ".no" (z.B. statt ".vbs"): 'VBSStart' wird nicht gestartet; der "1Service" bleibt erhalten.
    - es existiert 'VBSStart' mit der Dateiendung ".boot": statt 'VBSStart' wird der PC nach 3min neu gestartet; der "1Service" bleibt erhalten.
    - es existiert 'VBSStart' mit der Dateiendung ".end" oder
    - es fehlt das Skript 'VBSStart': Der Dienst "1Service" wird gelöscht bzw. entfernt.
Z.B. wenn 'VBSStart' seine Aufgaben erfüllt hat, löscht es sich selbst und beim nächsten Systemstart wird der Dienst "1Service" von 'VBSDienst' entfernt. Oder wenn 'VBSStart' seine Aufgaben erfüllt hat, schreibt 'VBSStart' eine dieser Dateien; beim nächsten Systemstart . . .
Da das Skript 'VBSDienst1' kein richtiger Dienst sein kann, wird es vom Dienstmanager nach 30s beendet - mit einem Fehlereintrag in der Ereignisanzeige.
Dieses Skript ist eine Erweiterung bzw. Ablösung von wmi-vbsalsservice.vbs ab:
QuellCode> wmi-VBSalsService.vbs
"Skript als Dienst" oder "VBScript als Service" - Das Skript zeigt, wie sich ein VBScript als Dienst eintragen lässt, der vor der Benutzeranmeldung gestartet wird.
Im Dienstnamen darf kein Leerzeichen (Space) enthalten sein!
Richtige Dienste bzw. Services melden an den Dienstmanager "etwas" zurück. Einfache Skripte können dies nicht und erzeugen Einträge in der Ereignisanzeige. Aus diesem Grund wird ein Skript gestartet, das ein anderes startet. Der Dienstmanager beendet nämlich Dienste, die keine Meldungen an ihn zurück geben. Dieses Startskript "C:\test\VBSstart.vbs" besteht aus nur einer Zeile:
CreateObject("Wscript.Shell").Run "C:\test\richtiges.vbs"
Am Ende des Skripts wmi-VBSalsService.vbs wird der Dienst auch gleich wieder entfernt.
QuellCode> 1service_serviceentfernen.vbs


QuellCode> VerzeichnisAltDelete
löscht alle alten Verzeichnisse in einem Verzeichnis (C:\Temp), die vor 100 Tagen oder mehr angelegt wurden (siehe auch DateienAltDelete.vbs).

QuellCode> Verz-Suchen-Loeschen.vbs
ist das Ergebnis einer Newsgroup-Anfrage: Auf einem Server müssen die 'Temporary Internet Files' in allen ...\user\... Verzeichnissen komplett gelöscht werden. (Um das nicht gleich hart in einer Produktionsumgebung testen zu müssen, habe ich noch ein Skript geschrieben, dass diese Verzeichnisstruktur zum Test mal eben auf C:\ erstellt.)

QuellCode> wait.vbs
Liegt das Skript in einem über PATH erreichbaren Verzeichnis (z.B. c:\windows\system32\) kann man es in einer .bat bzw. .cmd-Datei aufrufen:
  wait.vbs 10
lässt die Abarbeitung (etwa) 10 Sekunden ruhen. Wird das Skript ohne Parameter gestartet, pausiert es für 0,1 Sekunden (wobei der Aufruf durchaus länger dauern kann).
Werden mehr als ein Parameter übergeben, wird versucht, diese nach Ablauf der Zeit per WSHShell.Run zu starten. "wait.vbs 9 taskmgr.exe" startet nach 9s den Taskmanager.

QuellCode> wav-to-mp3.vbs
habe ich für eine spezielle Aufgabe gebraucht: Zeit gesteuert hat mein PC nachts 4h Musik vom Radio aufgenommen und in WAV-Dateien gespeichert. An Hand der Playlist habe ich die Titel (Titel-Name = Datei-Name) je Interpret (Interpret-Name = Verzeichnis-Name) abgespeichert. wav-to-mp3.vbs hat nun die WAV- in mp3-Dateien umgewandelt und die mp3-Tag's für Interpret und Titel automatisch gesetzt. Wenn alle Titel umgewandelt sind, wird jeder Titel zu Hörprobe angespielt. Nach dem Schließen des mp3-Player kommt die Frage, ob die WAV-Datei gelöscht werden kann.

QuellCode> WinNT-OR-Win9X.vbs
testet ab WinNT/2k oder Win9x/ME das aktuelle Betriebssystem ist und ruft dementsprechend ein anderes .VBS auf.

QuellCode> WinVerSP.vbs
zeigt die WinNT/2k-Version und ggf. installierte Servicepacks an. Setzt Regobj.dll voraus, um die Registry auszulesen - fragt, welcher PC getestet werden soll.
QuellCode> wmi-winver.vbs
das Ganze per WMI.
QuellCode> wmi-winversp.vbs
 Function ListSystemInformation( PC )  ermittelt einigen Infos zum PC per WMI.
QuellCode> winversp-regread.vbs
das Ganze mit 'normalen' RegRead.

QuellCode> WSH-Info.vbs
zeigt, was man über das installierte WSH und das aktuelle Skript herausfinden kann.

WSHBackup.zip ist ein Backup-Skript von Marcus Müller auf der Site von www.logiclink.de mit einer ausführlichen Erklärung.

zahlentheorie.exe anthält einige Skripte zur Zahlentherie von W. Schmelz - der jeweilige Dateiname beschreibt, wozu das Progrämmchen gut ist:
Euler.vbs
   GeradSumme.vbs
   LogNat.vbs
   PrimZahlDrilling.vbs
   PrimZahlListe.vbs
   PrimZahlLuecke.vbs
   PrimZahlQuadr.vbs
   PrimZahlVierling.vbs
   PrimzahlZahl.vbs
   PrimZahlZwilling.vbs
   PrimZerlegen.vbs
   PrimZListeTeiler.vbs
   PrimZMsgBox.vbs
   Quersummensumme.vbs
   UngeradSumme.vbs
   ZahlenSumme.vbs
   ZahlVollkommen.vbs

QuellCode> ZeileInDateiTauschen.vbs
durchsucht eine Liste von Dateien nach einer Zeichenkette und tauscht ggf. die komplette Zeile aus. In den Zeilen dürfen keine Anführungszeichen " stehen! Dazu stellt 'dateiliste.txt' eine Liste der zu prüfenden Dateien bereit. Beim Skriptaufruf wird nach der zu suchenden Zeichenkette gefragt. (Am einfachsten: zu suchende Zeile in die Zwischenablage übernehmen und als Such-String einfügen. - Ich habe damit in meinen HTML-Dateien u.a. das Bild und das [meta name="DC.Date" ... ] - Tag geändert.) Die Ursprungsdatei(en) werden in der letzten Zeile des Skripts gelöscht.
 
QuellCode> zeilennr-anpassen.vbs
ersetzt
QuellCode> zeilennr-msgbox.vbs.
 Sub ZeilenAnpassg( Datei, Sicherg )  enthält die eigentliche Funktionalität, um sie leichter in sendenan-sicherung.vbs nutzen zu können. In der Prozedur macht das Skript entsprechend dem Parameter 'Sicherg' von 'Datei' eine Sicherungskopie, wenn die Sicherungsdatei nicht existiert (für sendenan-sicherung.vbs erforderlich).
In allen Zeilen der 'Datei' wird nach ' :: ' (das sind 4 Zeichen) gesucht. Ist die Suche erfolgreich, werden zwei Fälle unterschieden - abhängig von den Zeichen davor:
 1.  Die Zeichen davor enthalten ein Anführungszeichen, gefolgt von einer max. 4stelligen Zahl und anschließend ' :: ' - z.B.:
MsgBox "123 :: Meldung"
WScript.Echo "9 :: CScript.exe oder WScript.exe?"
FileOut.WriteLine "9876 :: für LOG-Dateien"
=> Dies ist die VBS-Unterstützung in .VBS- / .HTA- / .HTML-Dateien.
 2.  Die Zeichen davor enthalten ein kleines 'o' (von 'Echo'), gefolgt von einem Leerschritt, gefolgt von einer max. 4stelligen Zahl anschließend ' :: ' z.B.:
Echo 123 :: Meldung
Echo 6 :: Meldung um %date% %time% >> LogDatei.txt
=> Dies ist die Befehlszeilen-Unterstützung in .BAT- / .CMD-Dateien.
Die max. 4stellige Zahl wird durch die aktuelle Zeilennummer ersetzt - 4stellig mit führenden Nullen.
Zum Testen das Skript ohne Parameter starten: Im Skript werden entsprechend den Bedingungen in den Beispielzeilen die korrigierte Zeilennummer eingetragen und das Ergebnis mit Notepad angezeigt. Beim zweiten Aufruf dieses Skripts, werden auch die (MsgBox-) Meldungen die richtige Zeilennummer anzeigen.
Hinweis: Bei .BAT-, .CMD-, .HTA-, HTM-, .HTML- und .VBS-Dateien wird die (Quell-) Datei immer neu geschrieben!

↑ Zum Seitenanfang ↑