Galerie
Profitipps zu Windows
Wir erklären Ihnen, wie Sie unter anderem per Batch-Programm direkt auf die Registrierdatenbank sowie auf VB-Script-Funktionen zugreifen.

Eine Setx-Definition ist erst in später geöffneten DOS-Fenstern sichtbar und wirksam.
Tipp 1: Globale Umgebungsvariablen
Manche Programmabläufe benötigen Variablen, die allen Anwendungen zur Verfügung stehen.
Wenn Sie im DOS-Fenster mit dem Set-Befehl Variablen definieren, so stehen sie nur in diesem DOS-Fenster bereit. In früheren Windows-Versionen mussten Sie feste Werte entweder in der Systemsteuerung unter System/Erweitert/Umgebungsvariablen/Neu manuell setzen oder flexible Daten als Datei transportieren. Windows Vista und Windows 7 liefern dafür den Befehl Setx. Damit kann man Variablennamen sowie zugehörige Daten entweder allen Fenstern des aktuellen Anwenders oder allen Anwendern auf dem ganzen System zur Verfügung stellen.
Setx befindet sich auch in den Windows XP Support Tools for Advanced Users, in den Windows 2000 Resource Kit Tools oder kann bei Microsoft als Einzeldatei geladen werden. Die Anweisungsfolge setx TempvarWert definiert die Umgebungsvariable Tempvar auf dem lokalen System für alle Fenster des aktuellen Anwenders.
Eingeschränkt gilt, dass dieser Wert erst in DOS-Fenstern bereitsteht, die nach der Variablendefinition angelegt werden. Um im aktuellen DOS-Fenster die Setx-Werte sofort zu verwenden, muss man sie mit dem Set-Befehl kombinieren:
setx Tempvar Wert
set Tempvar=Wert
Wie man sieht, unterscheidet sich die Syntax der beiden Befehle. Soll eine Umgebungsvariable in allen Fenstern aller Anwender verwendbar sein, nimmt man den Parameter /M, der allerdings Administratorrecht erfordert: setx Tempvar Wert /m Der Parameter /M schreibt dann die Daten nicht in HKEY_CURRENT_USER, sondern in den Registrierungsschlüssel HKEY_LOCAL_MACHINE.

n der Windows-Oberfläche (System/Erweitert/Umgebungsvariablen) wird jede Setx-Definition sofort gültig.
Tipp 2: Umgebungsvariablen aus der Registry
Viele interessante Daten verbergen sich in der Registrierdatenbank. Etliche davon verwerten Sie gewinnbringend in Batch-Programmen.
In der Registrierdatenbank ist praktisch alles gespeichert, was Windows betrifft. Die Auswertung bestimmter Werte in der Registry war mit Windows-Bordmitteln in früheren Windows-Versionen nicht möglich.
Mit dem Setx-Befehl lässt sich hier eine Brücke schlagen, indem Setx auf Zeichenketten- sowie Dwort-Werte aus der Registrierdatenbank zugreifen kann und sie in einer definierten Umgebungsvariablen ablegt. Ein Batch-Programm kann diese Informationen dann per Standardbefehl Set aufgreifen und auswerten. Die folgende Sequenz legt als Beispiel die Dateiposition der Bilddatei des Desktop-Hintergrundes sowie deren Namen als kompletter Pfad in der Variablen Tempvar ab:
setx Tempvar /k "HKEY_CURRENT_USER\Control Panel\Desktop\
Wallpaper"
Da sich im Registry-Namen ein Leerzeichen befindet, ist es notwendig, den ganzen Schlüssel in Anführungszeichen zu setzen. In einem Stapelverarbeitungsprogramm verwenden Sie beispielsweise jeden Wochentag ein anderes Hintergrundmotiv, indem Sie Tempvar auswerten. Die Informationen aus der Registrierdatenbank führen in Kombination mit dem Setx-Befehl zu völlig neuen Einsatzgebieten in Batch-Programmen.

Die Variable Testvar lässt sich nur in der Windows-Oberfläche löschen.
Tipp 3: Rückwärtsgang für globale Umgebungsvariablen
Mit Setx lassen sich zwar globale Umgebungsvariablen setzen, nicht aber wieder löschen.
Die mit Setx definierten Umgebungsvariablen bleiben auf einem lokalen oder Remote-System auch nach einem Neustart verfügbar, bei Letzterem stehen sie sogar dann erst bereit. Die Werte einer so definierten Umgebungsvariablen lassen sich - wie der Name schon sagt - zwar beliebig oft ändern, inkonsequenterweise mit Setx jedoch nicht löschen.
Die Anweisungsfolgen setx Testvar " " führen dazu, dass Setx der Variablen Testvar entweder ein Leerzeichen oder eine leere Zeichenkette zuordnet, den Variablennamen aber dennoch beibehält. Die entsprechenden Umgebungsvariablen lassen sich jedoch unter Systemsteuerung/System/Erweiterte Systemeinstellungen/Umgebungsvariablen manuell löschen. Wurde die Variable mit dem Setx-Schalter /M definiert, so findet sie sich bei Systemvariablen, ansonsten unter Benutzervariablen.

Je nach Betriebssystemversion sowie installiertem Service-Pack müssen Sie manchmal weitere Netzwerkprogramme per Systemsteuerung/Software/Windows-Komponenten hinzufügen.
Tipp 4: Mach mal Pause
Selbst mit reinen Windows-Bordmitteln und Zusatzprogrammen lassen sich Pausen in Batch-Dateien realisieren.
Auch ohne den bei Vista und Windows 7 vorhandenen Befehl Timeout oder Zusatzprogramme wie der Befehl Sleep im kostenlosen Windows Server 2003 Resource Kit von Microsoft bestehen noch zwei weitere Methoden, um Wartezeiten in Stapelverarbeitungsdateien herzustellen. Beide Verfahren kann man zwar nicht gerade als elegant bezeichnen, doch sind sie neben der Problemlösung auf einem beliebigen PC schon mit Windows-XP-Systemen verwendbar.
Die erste Methode verwendet den Ping-Befehl, der möglicherweise in der Windows-Standardinstallation noch nicht enthalten ist. Über Systemsteuerung/Software/Windows-Komponenten hinzufügenoder ändern/Netzwerkdienste rüsten Sie den Befehl im Setup nach. Windows 7 liefert Ping standardmäßig. Der Befehl ping localhost -w 100>nul sowie das identische Gegenstück ping 127.0.0.1 -w 100>nul bewirkt, dass das Programm versucht, das lokale System zu erreichen, wobei der Schalter -w das Zeitlimit in Millisekunden definiert. Obgleich diese Lösung auf jedem Windows-PC mit Netzwerkprogrammen funktioniert, ist die Wartezeit so nicht exakt festlegbar.

P ause im Arbeitsablauf: Hier setzen Sie dazu Ping-Befehl und VB-Script-Methoden ein.
Tipp 5: Noch mehr Pausen
Um Pausen unter Windows zu erzwingen, lassen sich Stapelverarbeitungen auch um VBA-Befehle erweitern.
Ein völlig anderer Ansatz, um definierte Wartezeiten zu erzeugen, nutzt die Fähigkeiten der Windows-Scriptsprachen:
echo wscript.sleep 8000>bla.vbs
cscript bla.vbs>nul
Zuerst legen Sie dabei per Eingabeumleitung die temporäre Datei bla.vbs an, in der sich lediglich eine Anweisungszeile in VB-Script-Syntax befindet. Der Wert nach wscript.sleep definiert die Wartezeit in Millisekunden, hier also acht Sekunden. Die Folgezeile ruft den Windows Script Host auf, der dann die gerade erzeugte Datei ausführt. Wer möchte, kann die temporäre Datei bla.vbs noch löschen.
Diese wird bei dem nächsten Aufruf aber ohnehin überschrieben oder neu angelegt. Die zweite Methode, mit Windows-Bordmitteln eine Wartezeit zu bestimmen, zeigt u.a. auch, dass sich unterschiedliche Programmierumgebungen - hier Stapelverarbeitungsprogramme und VB-Script - durchaus miteinander kombinieren lassen. Auf ähnliche Weise verzahnen Sie übrigens auch VB-Script und Java miteinander, wodurch die Vorteile der diversen Programmierumgebungen gezielt nutzbar sind.

I neinander verschachtelte leere Programmschleifen führen in beliebigen Programmiersprachen zu einer Wartepause.
Tipp 6: Pausen per Programmschleifen
Wartezeiten lassen sich in jeder Programmierumgebung auch durch Programmschleifen erzielen.
In Programmschleifen wie etwa For-Next-, Do-Loop, Do-While- oder Repeat-Until-Konstrukten werden üblicherweise Anweisungsfolgen so lange wiederholt, bis ein Endkriterium erreicht ist. Ohne enthaltene Anweisungen benötigt die Ausführung von Programmschleifen aber auch ein wenig Zeit, sofern nicht ein intelligenter Compiler den Trick bemerkt. Sehr hohe Schleifendurchläufe erzwingen also auch Wartezeiten. So lassen sich beispielsweise Schleifen ineinander schachteln, um eine hohe Anzahl von Schleifendurchläufen zu erzielen:
for a=1 to 100000
for b=1 to 10000
next b
next a
Beide Schleifendurchläufe multiplizieren sich so zu einer Milliarde Durchgängen und sind leicht erhöhbar. Dieser Ansatz besitzt allerdings zwei deutliche Nachteile. Zum einen hängt es von der Geschwindigkeit des PCs ab, wie lange er die Schleifendurchgänge abarbeitet. Zum anderen wird dadurch nicht wirklich pausiert, vielmehr arbeitet der aktuelle Prozess unter voller Last, wenn auch ohne Ergebnis. Sofern also unterschiedliche Prozesse aufeinander abgestimmt werden sollen, ist die Methode mit leeren Schleifendurchläufen ungeeignet.