93. Mit einer Batch zwischen zwei Registrywerten Hin- und Her-schalten (switchbatch)

Einleitung


Es ist zeitaufwendig einem Beginner zu erklären, wie die Dateiendungen sämtlicher Dateien eingeblendet werden, damit man eine Batch schreiben kann. Also schrieb der Sternenhimmelstuermer eine Batch zur Veränderung des Registrierungsschlüssels.
Dabei landete er bei der Frage: Wie kann ich einfach mit einer Batch einen Registrierungswert verändern und bei einem weiteren Start derselben Batch den Wert wieder zurückstellen?

Wie dem auch sei, der Sternenhimmelstuermer schrieb eine Switch-Batch, mit der Sie zwischen zwei Zuständen Wechseln können. Natürlich entwarf der Sternenhimmelstuermer für dieses Problem seinen eigenen Lösungsansatz 100 % in cmd. Andere Seiten wie z. B. Administrator.de oder diese englische Seite nehmen hierfür VB-Skript, aber das ist komplizierter.

Der Sternenhimmelstuermer entwickelte einen anderen universellen Lösungsweg für dieses Problem:

Als Bezugspunkt wird ein neutrales Textdokument nach einem Wechsel geschaffen, dass der Batch signalisiert, dass ein Wechsel erfolgte. Beim nächsten Durchlauf wird der Wert zurückgesetzt und das Textdokument gelöscht. Dieses Spiel wiederholt sich bei jedem weiteren Betätigen der Batch.

Auf der Metaebene können Sie nun so mit den Codefragmenten  eine Switchbatch erstellen, mit der Sie in beliebigen Dateien zwischen zwei zuständen Wählen können. Diese Dritte-Mann-Lösung durch das Textdokument werden viele Batchschreiber zu schätzen wissen...

Inhaltsangabe
Hintergrundwissen (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced)
Vorbereitung (für Anfänger)
Batch
Varianten des Lösungswegs für unterschiedliche Problemlagen am Beispiel einer Hin- und Rück-kopiedatei
Variante einer Zeitstopp-Batch für ein beliebiges Programm (ausführlich als Vorlage)
Fazit

Hintergrundwissen

Der Sternenhimmelstuermer verwendet als Demo für die Batch einen Schlüssel aus dem Registrierungseditor (Gehen Sie mit start - regedit.exe ins Suchfeld eingeben - mit rechter Maustaste regedit.exe anklicken und als Administrator ausführen auswählen - dann den linken Schlüsselbaum in der Ordnerhierarchie den folgenden Pfad durchklicken):

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

In diesem Schlüssel sind, wie Sie aus diesem Link erkennen können, eine Vielzahl von Werten, die die Darstellung der Ordner oder Dateien im Explorer betreffen. Der Sternenhimmelstuermer leiht sich den DWORD Wert HideFileExt einmal aus (steht auf der rechten Seite im Schlüssel Advanced).

Erstellen Sie doch mal eine Textdatei auf dem Desktop, um die Änderungen in der Anzeige in den folgenden Ausführungen nachvollziehen zu können: Rechte Maustaste auf Desktop - neu - Textdokument. Dann fakultativ einen Namen angeben. Wird am Ende *.txt angezeig, so steht der oben angegebene Wert auf 0, wird die Dateiendung nicht angezeigt auf 1.

Der DWORD-Wert 0 auf der rechten Seite zeigt alle Dateiendungen (eben auch *.txt von Textdokumenten), der DWORD-Wert: 1 versteckt bekannte Dateiendungen.

Ändern Sie doch einmal den Wert und sehen nach einem kurzen Trick die Anzeige ohne Neustart des Betriebssystems. Dazu legen Sie am besten ein Textdokument wie oben angeheben auf den Desktop. Dann Doppelklicken Sie den Wert  HideFileExt mit der linken Maustaste. Nun tragen Sie im Dialogfenster in Wert: die Zahl 0 ein. Dann mit OK bestätigen. Erstmal sehen Sie keine Veränderung bei der Anzeige des Textdokumentes.

Der Explorer hat die alten Einstellungen noch geladen. Das ändern Sie jetzt mit einem Trick, damit Sie das Betriebssystem nicht nochmal starten müssen. Öffnen Sie den Taskmanager mit rechtem Mausklick auf die Taskleiste.

Im Eigenschaftsmenü wählen Sie Task-manager starten aus. Gehen Sie in die Registerkarte Prozesse. Suchen Sie dort den Prozess explorer.exe, markieren Sie diesen und drücken Sie die Entfernen/Del-Taste. Die Rückfrage, ob Sie den Prozess beenden wollen, beantworten Sie mit ja. Danach wird ihre Ansicht sich stark verändern - keine Sorge, nur Ordner, die Ansicht von Dateien auf dem Dektop und die Taskleiste schließen sich.

Danach gehen Sie im Taskmanager im Menü auf Datei und im Dropdownmenü auf Neuer Task (Ausführen). Hier geben Sie explorer.exe ein und bestätigen das mit der Returntaste. Sie bekommen nun wieder die alte Ansicht wieder - mit dem Unterschied, dass bei dem Textdokument die Endung *.txt angezeigt.

Warum dieses Experiment?

Sie wissen nun, dass der Prozess explorer.exe für die Ausführung des Explorers steht. Dieser greift sich im Registrierungseditor aus dem Schlüssel ...Advanced die Werte ab, die für Sie entscheidend sind.

Mit diesem Hintergrundwissen wird die arbeitsweise für Sie leichter und mit dem Wissen, dass man mit einer Batch Prozesse starten und beenden kann (in unserem Fall explorer.exe), kann man ohne lästigen Neustart sämtliche Werte im Schlüssel Advanced ändern, in dem man in der Batch den Prozess explorer.exe kurz beendet (taskkill) und hinterher wieder startet (start).

Da Sie nun ausreichend Hintergrundwissen besitzen Schreiten Sie nun zur Tat.


Vorbereitung (für Anfänger)

Als erstes Erstellen Sie eine leere Textdatei, um daraus die Batchdatei zu erstellen: Rechte Maustaste auf Desktop, aus dem Kontextmenü Neu - Textdokument. Dann die Datei mit einem aussagekräftigen Namen benennen:  datend.bat . Wichtig ist die Dateiendung *.bat. Der Name ist egal: Sonderzeichen und über sechs Buchstaben ist erstmal für Sie Tabu. Unterstrich _ ist erlaubt.

Wird ihnen die Dateiendung nicht angezeigt, so müssen Sie zuvor das Anzeigen von Dateiendungen auch bei bekannten Dateiendungen in einem beliebigen Ordner einstellen: Extras - Ordneroptionen - Registerkarte: Ansicht. Dann Häkchen bei  Erweiterungen bei bekannten Dateiendungen ausblenden entfernen. Sollte auch die Menüleiste mit Extras nicht angezeigt werden, so in das Dropdownmenü von Organisieren - Layout und Menüleiste anzeigen.

Dann legen Sie ein neues Textdokument in einem Ordner oder auf dem Desktop an: Rechte Maustaste auf Fensterfläche des Desktops oder Ordners - im Eigenschaftsmenü neu und im folgenden Eigenschaftsmenü Textdokument. Mit doppelten Mausklick sollte sich der Editor öffnen. Falls nicht, start - suchfeld editor eingeben - mit Doppelklick öffnen und im Menü Datei wie gewohnt in jedem Programm unter Menüpunkt Datei und Öffnen  die Datei im entsprechenden Pfad suchen. Ja, der Texteditor ist für Batchdateien das bevorzugte Werkzeug und als Bordmittel zudem auf jedem Computer mit Windows vorhanden.

Batchdateien laufen in der Regel immer Zeile für Zeile von oben nach unten. Ausnahme ist der Goto Befehl, bei dem Zeilen übersprungen werden.

Danach können Sie den u. a. Text in den Texteditor kopieren oder per Hand eingeben. Danach speichern Sie die Datei.

Zu guter letzt benennen Sie den Dateinamen um. Textdokument einmal mit rechter Maustaste anklicken und im Eigenschaftsmenü Umbenennen auswählen. Danach den Namen in Form beliebigerText.bat umbenennen.

Wichtig ist nur die Endung *.bat.

Die kann dann durch Doppelklick mit der linken Maustaste wie gewohnt gestartet werden.

Anmerkung: Nach dem Umbenennen können Sie die Datei nur noch mit rechtem Mausklick und Öffnen weiterbearbeiten. Hier öffnet sich auf jeden Fall der Texteditor...


Batch

So, nachdem Anfänger und Profis auf demselben stand sind, nun  erstmal die Batch und hinterher Zeile für Zeile erklärt. Für fortgeschrittene hört die Abhandlung auch dann schon auf (Inhalt von datend.bat zwischen ---) :

---

if exist change.txt goto wechsel
reg add hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 0 /f
taskkill /f /IM explorer.exe
start explorer.exe
Dummytext>change.txt
goto ende
:wechsel
reg add hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 1 /f
del change.txt
taskkill /f /IM explorer.exe
start explorer.exe
:ende

---

Das wichtigste zuerst. Sie können die Datei kopieren und einfügen. Der Dateiname ist ziemlich egal - es muss nur eine *.bat sein. Nehmen Sie einen anderen Namen, so müssen Sie das natürlich in der Batch anpassen.

Am besten packen Sie die Datei in einen beliebigen Ordner und erstellen eine Verknüpfung durch Drag und Drop mit der rechten Maustaste (nach dem Ziehen bei gedrückter rechter Maustaste der Originaldatei einfach aus dem Aufklappmenü beim Fallenlassen Verknüpfung hier erstellen auswählen).

Troubleshooting: Sollte die Datei mal nicht funktionieren (durch Abschreibfehler), dann können Sie sich den Explorer zurückholen, in dem Sie die Tastenkombination strg alt entf drücken und den Taskmanager auf den Bildschirm holen. Dann können Sie wie im Kapitel Grundwissen beschrieben den Explorer zurückholen. Das wäre der schlimmste anzunehmende Fall, wenn Sie sich bei der start explorer.exe Reihe verschreiben - also nicht wirklich kritisch!

So, dann wie immer die Erklärung Zeile für Zeile. Die Batch sieht erstmal schwierig aus, aber die ist wirklich einfach gestrickt und hat nur ein paar Zeilen mehr, weil wir den Explorer nochmal neu starten...:

if exist change.txt goto wechsel 

Der Befehl if ist in der Windowshilfe ausführlich dokumentiert if / ? in cmd eingeben. Starten der cmd (Kommandozeile): start - cmd in Suchzeile eingeben - mit rechter Maustaste cmd.exe anklicken und aus dem Eigenschaftsmenü als Administrator ausführen auswählen. Der exist - Befehl wird beim If-Befehl gleich miterklärt, da Sie eine schlüssige Einheit bilden. Wenn also eine Datei (in unserem Falle change.txt existiert (der Pfad ist relativ, d. h. so wie hier verwendet muss diese Datei im selben Ordner oder auf dem Desktop sein - je nachdem an welchem Ort die Batch liegt), dann springe (goto) bis zum Wort :Wechsel

Damit wären wir beim Befehl Goto. Sie können zu jedem beliebigen Wort springen: in diesem Fall das Wort :wechsel - nur muss beim Sprungziel als Erkennungsmerkmal ein Doppelpunkt vorangestellt sein. Das ist in der siebenten Zeile der o. a. Batch :wechsel.

Beim ersten Betätigen der Batch durch Doppelklick läuft die Prüfung ins leere, da keine Textdatei in ihrem Ordner oder auf dem Desktop mit Namen change.txt existiert. Also läuft unsere Batch weiter wie gewohnt und arbeitet weiter stur Zeile für Zeile ab. Das ist so gewollt, da erst nach dem Wechsel das Textdokument automatisch in der Batch erstellt wird.

reg add hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 0 /f

Auch der Reg add - Befehl ist in der CMD-Hilfe bestens dokumentiert (reg add /?). In dieser Zeile könnte auch der Verweis zum Start einer Reg-Datei stehen. Das ist aber höchst unprofessionell.

Reg add heißt hinzufügen bzw. verändern eines Registrierungswertes.
hkcu ist so ziemlich die einzige Änderung im Pfad für den Registrierungschlüssel, den Sie verändern wollen - zur Erinnerung des Pfades in dem Registrierungseditor:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
 
Leider muss der Befehl transformiert werden, um ihn von der Batch in den Registrierungseditor zu übertragen.

In der Dokumentation von reg add /? sind alle Kürzel der Hauptschlüssel wie hkcu für Hkey Current User aufgeführt.

Danach wird es schwieriger, da Sie nun einen Wert mit Inhalt erstellen müssen:

Advanced

ist der Schlüssel, in dem wir uns befinden, die Schrägstriche mit Buchstaben sind dann folgend die Parameter bzw. der Wert per se, der erstellt wird.

/v HideFileExt

So heißt also unser Wert.


/t REG_DWORD

Das ist die Bezeichnung des Wertes - es gibt auch viele andere Werte. Eine Liste finden Sie in der Windowshilfe. Aber diesen Wert brauchen Sie ziemlich oft


/d 0 /f

Das ist dann die Zahl, die 0, auf die es eigentlich ankommt. Der Wechsel findet immer zwischen 0 und 1 statt.
Der Parameter /f ist nur der Hinweis, das der alte Wert überschrieben werden soll.

Wir haben also zu diesem Zeitpunkt eine 0 in unserer Batch in den Wert dieses Schlüssels eingetragen, mehr ist noch nicht passiert.

taskkill /f /IM explorer.exe

Als nächstes schalten Sie den Explorer aus, damit die alten Einstellungen, mit denen der Explorer gestartet wurde, beendet werden. Der Parameter

/f beendet den Prozess - ist ein himmelweiter Unterschied zum Löschen des Prozesses
/IM steht für den Abbildnamen - d. h., Sie brauchen bei ausgesuchten windowseigenen Prozessen nicht den kompletten Pfad einzugeben.

Der Prozess explorer.exe wurde bereits im Kapitel Grundwissen beschrieben.

start explorer.exe

Der Explorer wird wieder automatisch neu geladen und zieht sich die neuen Registrierungswerte.

Nun gibt es zwei Möglichkeiten: Es stand vorher eine Null im o. a. Wert. Dann steht jetzt eine 0 im Wert. D. h., das erstmal eine Dateiendung bei bekannten Dateien angezeigt wird. Also keine Änderung.
Stand zuvor eine 1 bei der ersten Ausführung drinnen (Dateiendung txt wurde also nicht angezeigt), dann wird die alte 1 durch eine 0 ersetzt und die Veränderung angezeigt (die Dateiendung Text erscheint). War das Alles? Nein, denn es geht ja nun mit der nächsten Zeile weiter...

Dummytext>change.txt

Dummytext ist mal wieder ein Kunstwort. Wir brauchen irgend ein Wort, um mit dem Befehl  >change.txt ein Textdokument mit dem Namen change.txt zu erstellen. Warum?

Wir haben beim nächsten Durchlauf nun das Textdokument mit Namen change.txt, dass in der ersten Zeile der CMD durch die exist-Prüfung erkannt wird. Dadurch springt die
CMD dann zum Wort :wechsel und die Befehle, die wir jetzt gerade abarbeiten werden dann ignoriert!

goto ende
 
Das Ziel, eine Registryänderung herzustellen und ein Textdokument als Beleg zu erschaffen ist erreicht. Die Batch überspringt alle weiteren Befehle und geht ans :ende, was gleichzeitig auch
dem Ende der Datei entspricht.

Die folgenden Befehle werden also nach dem Existieren des Textdokumentes change.txt ausgeführt - also für den User mit dem nächsten Start der Batch mit einem Doppelklick!

:wechsel

Beim wiederholten Betätigen der Batch existiert auf jeden Fall die Datei change.txt . Die Prüfung in der ersten Zeile der Batch schickt die CMD also zu dieser Zeile. Die darunterliegenden Befehle werden nun abgearbeitet.


reg add hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 1 /f

Die Zeile muss Ihnen nicht mehr erklärt werden, da sich nur ein Eintrag von dem vorherigen Reg Add - Befehl unterscheidet - statt einer Null im DWORD, steht nun eine 1 hier. Das bedeutet, dass nun die Dateiendungen bei bekannten Dateien nicht angezeigt werden.
Es geschieht also ein Wechsel des Zustandes bzw. ein Zurücksetzen des Registrywertes.

del change.txt

Sie erinnern sich? Wir hatten beim ersten Durchlauf eine Datei Namens change.txt geschaffen und den Wert verändert. Beim nächsten Durchlauf haben wir den Wert zurückgesetzt, weil eine change.txt existierte. Nun löschen wir das Textdokument change.txt.
Das heißt, beim nächsten Durchlauf der Batch existiert keine change.txt mehr mit allen Konsequenzen, die vor dem Zielpunkt des GOTO-Befehls :wechsel stehen. Das ist also eine Maßnahme für die Zukunft und Dreh und Angelpunkt für die Veränderung beim nächsten Start der Batch.

taskkill /f /IM explorer.exe
start explorer.exe


Die beiden o. a. Zeilen gehören zum letzten Reg add Befehl. Damit die Änderungen wirksam werden, muss der Explorer wieder kurz beendet und neu gestartet werden. Diese "Wiederholung" der Befehle muss stattfinden, da ansonsten nur jeden zweiten Durchlauf dieses Prozedere stattfinden würde. Je nach Zustand wird ja nur ein Reg add Befehl ausgeführt und jeweils die andere Befehlskette durch den Goto-Befehl übersprungen.

 :ende

Ende ist der Bezugspunkt  für den ersten Befehlsstrang. Ansonsten würden beide reg add Befehle abgearbeitet werden und keine Veränderung eintreten.



Varianten des Lösungswegs für unterschiedliche Problemlagen am Beispiel einer Hin- und Rück-kopiedatei


Dem Sternenhimmelstuermer geht es bei dieser Batch weder um das Verändern des Registryschlüssels noch um Sinn oder Unsinn der Batch - was zählt, ist der Lösungsweg. Philosophisch gesehen ist der Lösungsweg ein Ansatz aus der Ideenwelt nach Platon und der Inhalt der Batch eine kurze Suche mit Google nach den Befehlen. Das ist jetzt zu hoch ?

Nein, anhand eines kleinen Beispiels werden Sie verstehen, dass das Wechseln zwischen zwei Zuständen nun mit wenigen Handgriffen möglich ist.

Dazu suchen Sie sich z. B. mit Google den Befehl zum Kopieren von Dateien von einem Ordner zu einem anderen Ordner oder USB-Stift. Danach tauschen Sie die beiden Reg add Befehle einfach in eine Kopieraktion um - einmal z. B von dem USB-Stift zum Ordner und einmal umgekehrt zum USB-Stift. Schon haben Sie eine Funktion, um ein Backup einzuspielen, dort können Sie die Dateien bearbeiten und mit einem weiteren betätigen die Dateien auf den USB-Stift zurückspielen. Der Sternenhimmelstuermer schrieb mit Absicht nicht diese Batch, da bei falscher Nutzung bzw. einem Denkfehler des Users die alten Dateien die neuen ersetzen könnten, was ziemlich ärgerlich wäre...

Dann könnten übrigens auch die vier Explorer- Start und -Ende Dateien gelöscht werden, da der Explorer für eine Kopieraktion ja keinen Explorerneustart braucht -:)

Ja, mit dem Abstraktionsprinzip können Sie die Batch für  unzählige Lösungen von Problemfällen verwenden. Dazu gab die Sternenhimmelstuermerseite auf der Metaebene einen Weg vor.

Der Sternenhimmelstuermer braucht nur ein paar Befehle zu kennen. Dann sucht er eine Möglichkeit auf der Metaebene den Lösungsweg umzusetzen. Der Rest ist Beiwerk. Bei einigen Abhandlungen der Sternenhimmelstuermerseite wird auf den Lösungsweg speziell hingewiesen - machen Sie sich die Mühe ein paar zu lesen -:)

Deshalb sind Esotheriker und Menschen über 30 Jahre in der Regel auf der Sternenhimmelstuermerseite klar im Vorteil. Die Fähigkeit Sachverhalte oder Lösungswege zu abstrahieren wächst mit steigendem Lebensalter, um dann entweder im hohen Lebensalter wie ein Kartenhaus zusammenzufallen oder bis zum Tode erhalten zu bleiben. So genannte Genies sind ohne Lebenserfahrung schon in frühen Lebensjahren fähig zu abstrahieren, wie z. B. C. G. Jung - wenn Sie so wollen - eine Gabe Gottes.

Deshalb finden Sie bei Google auch mehr Artikel des Sternenhimmelstuermers als mit anderen Suchmaschinen. Die Suchalgorythmen von Google sind intelligenter, als von anderen Suchmaschinen. Sie erkennen teilweise eben auch abstrakte Zusammenhänge. Die anderen Suchmaschinen sind für gute Inhalte auf der Metaebene einfach zu "dämlich" :-) Deshalb werden Sie insgesamt mehr intellektuelle Seiten bei Google entdecken, als bei Bing, Yahoo und Co.

Variante einer Zeitstopp-Batch für ein beliebiges Programm (ausführlich als Vorlage)

Man kann nun auf der Metaebene die Switchbatchvorlage für verschiedene Problemfälle anpassen und die Datei erweitern - in diesem Fall mit der Batch die Zeit für eine beliebige Anwendung zu stoppen - zuerst der Quelltext einer Anwendung, deren Laufzeit wir stoppen, dann die Erklärung:

if not exist time.log echo %date%>time.log
if exist change.txt goto wechsel
start "" "C:\Program Files\Internet Explorer\iexplore.exe"
 ECHO %date% %Time% >>time.log
echo Dummytext >change.txt
goto ende
:wechsel
ECHO %date% %Time% >>time.log
del change.txt
taskkill /IM iexplore.exe
:ende


Hier wurde der Internetexplorer über die Batch gestartet, eine zusätzliche Log-Datei erstellt, beim Start Anfangszeit und Datum eingetragen. Beim zweiten Klicken der Anwendung der Internetexplorer geschlossen, ein zusätzlicher Eintrag von Datum und Uhrzeit.

Das switchen ist wieder auf die althergebrachte Weise für den Zustandswechsel erforderlich. Für das Kopieren erstellen Sie wieder eine Batch und packen diese in einen  beliebigen Ordner oder auf den Desktop -

 if not exist time.log echo %date%>time.log


If not ist das Gegenteil von If exist. Beim ersten Start liegt kein time.log - Dokument vor, dass muss hier erstellt werden. Die Endung *.log steht für Logdateien. Die sollte man nicht hirnlos vom Computer löschen, da selbst Profiprogramme teilweise auf Log-Dateien zugreifen

 echo %date% ist die elegantere Weise das Datum des Tages auszugeben und als ersten Eintrag in die time.log einzutragen. Der Sternenhimmelstuermer ist Minimalist. Date ist eine vorgegebene Variable - man brauch dafür keine Variable zu schafen, weil das als Variable bereits für  TT.MM.JJ steht. Deshalb die %-Zeichen, die dann Ausnahmsweise mal nicht verdoppelt werden müssen, wie es in Batches sonst üblich ist.

if exist change.txt goto wechsel


Die zweite Prüfung ist wieder die Prüfung für unseren Switch. Richtig, kein Wort wurde verändert, da diese Zeile zum unveränderbaren Gerüst dieser Konstruktion gehört. Beim ersten Doppelklick existiert wieder kein change.txt, deshalb läuft die Datei wieder stur Zeile für Zeile weiter!

start "" "C:\Program Files\Internet Explorer\iexplore.exe"

Hier wird die Anwendung gestartet. Das kann übrigens auch ein Ordner sein. start "" "beliebigeAnwendungPfad zur ExeoderOrdner". Das blaue ist das Grudgerüst, das Sie schnell beliebig anpassen können!

ECHO %date% %Time% >>time.log

Das ist der Eintrag für unsere Datei Time.log zu beginn des Startes. Die Time.log besteht wegen der ersten Zeile auf jeden Fall. Die wird auch später nicht gelöscht. >> Ist ein Eintrag in dieser Datei, der automatisch in die letzte Zeile gemacht wird. Der Pfad in

echo Dummytext >change.txt
goto ende



Die nächsten zwei Zeilen sind wieder Bestandteil des Gerüstes der Switchbatch: Eine Datei mit Namen Change.txt wird erstellt. Danach wird die Batch ans Ende der Batch geleitet. Die nächsten Zeilen werden erst beim Schließen des Explorers über die Batch im nächsten Durchlauf interessant!

:wechsel

Beim Beenden des Internet Explorers über die Batch - also beim zweiten Doppelklicken wird die Zeit erfasst, wann Sie sich ausloggten.Eine change.txt wurde ja wieder erschaffen, also springt die Datei bei der Prüfung in der zweiten Zeile zum Wort Wechsel. Mehr passiert beim zweiten Doppelklicken erst mal nicht, nur das die Dati die nun nachfolgenden Zeilen bearbeitet und die vorherigen ignoriert.

ECHO %date% %Time% >>time.log

Der Befehl wurde bereits erklärt. Datum und Zeit werden in unser time.log eingeragen. Diesmal die Endzeit.

del change.txt

Das ist wieder die Zerstörung des change.txt Dokumentes, damit beim nächsten Doppelklick wieder eine Prüfung in der zweiten Zeile erfolgt. Die wird dann negativ ausfallen, da wir gerade change.txt gelöscht haben. Also werden dann wieder die Befehle bis :wechsel abgearbeitet...

taskkill /IM iexplore.exe

Der Internetexplorer wird jetzt unsanft beendet. IM steht wieder für den Abbildnamen, da sonst der ganze Pfad angegeben werden müsste. Das müssen Sie hier an ihre Anwendung anpassen.

Das war es dann auch schon Der Internetexplorer wurde beendet, der Eintrag gesetzt. Können Sie sich dann mit einem Doppelklick auf time.log gerne anschauen.

Die Datei ist sehr rudimentär und man muss über Sie die Anwendung öffnen und schließen. Das können Sie sich vereinfachen, indem Sie die Verknüpfung eine Verknüpfung in der Taskleiste anlegen. Ja, das ist mit einem Trick möglich (ob Anwendung oder Ordner ist egal), über eine quatsch.exe, deren Verknüpfung in der Taskleiste dann umgeschrieben wird.

Mit zwei kleinen Änderungen und einer Abänderung in Verknüpfungen (&) ist es übrigens möglich, daraus eine kleine Spionagedatei zu errichten. Man muss nur die Batch darauf trimmen, dass beim Ende der Ausführung durch schließen des Fensters die Zeiterfassung stattfindet. Aus ethischen Gründen keine Beschreibung, wer sich ein wenig mehr mit Windows auseinandersetzt, der weiß wie es geht.

Das war also ein Beispiel, wie Sie mit ein paar Zeilen mehr Text die Switchdatei erweitern können. Das ist sogar eine relativ sinnvolle Anwendung...

Genauso wäre es möglich, mit einer zweiten Batch beim Systemstart oder eleganter mit einem command - Wert im Run-Schlüssel, der eine andere Batch an einem beliebigen Ort startet, wenn die Prüfung auf die change.txt positiv ausfällt. Als Beispiel hierfür könnte man z. B. eine Warnung ausgeben, wenn man mit einer switchbatch uac ausgeschaltet (ist nur Veränderung eines Reg-Wertes) hat.

Ohne Witz, der Sternenhimmelstuermer könnte mit der Switchbatch c. a. ein dutzend Abhandlungen schreiben, aber das wird jetzt schon ziemlich langweilig. Lassen Sie ihre Fantasie spielen.


Fazit

Das Hin- und Herschalten zwischen zwei Registrywerten mit einer Batchdatei ist zu 100% mit einer relativ einfachen Batch möglich. Als Bezugspunkt wird ein neutrales Textdokument nach einem Wechsel geschaffen, dass der Batch signalisiert, dass ein Wechsel erfolgte. Beim nächsten Durchlauf wird der Wert zurückgesetzt und das Textdokument gelöscht. Dieses Spiel wiederholt sich bei jedem weiteren Betätigen der Batch.

Das heißt auch, dass das Betriebssystem zwischenzeitlich herruntergefahren werden kann. Das Textdokument bleibt so lange erhalten, bis ein weiterer Durchlauf es löscht. Diese Eigenkreation vom Sternenhimmelstuermer ist wirklich effektiv.

Auf der Metaebene kann man die Batch mit wenigen Handgriffen umgestalten, um für den User eine Möglichkeit zu schaffen, zwischen zwei Zuständen zu switchen. Das Ganze wird mit einer beschränkten Anzahl an Befehlen (if exist, zwei goto Befehlen, Befehl zur Erstellung und Befehl zur Löschung des Textdokumentes realisiert). Diese Befehle sind selbst Anfängern bekannt - und somit sehr viel leichter, als immer Batches mit einer individuellen Prüfung anzupassen.

Weiterhin wurde anhand der Demo gezeigt, wie man mit Hilfe von den Befehlen Taskkill und start sich oft einen lästigen Neustart des Betriebssystems in einer Batch bei explorerabhängigen Befehlen spart.

Die Sternenhimmelstuermerseite löste hier wieder mehrere Probleme, stellte einen interessanten Schlüssel im Registrierungseditor vor und gab eine Anleitung für Reg Add - Befehle.

Diese kleine Abhandlung ersetzte also eine Vielzahl von Einzeltips. Foren sind für Einzeltips unschlagbar, aber in Sachen Projekte und Abhandlungen bleibt die Sternenhimmelstuermerseite im deutschsprachigen Raum führend. Die nächste Abhandlung wird dann wieder leichter, aber der Sternenhimmelstuermer versucht einen fairen Mix zwischen leichten und schweren Abhandlungen zu schreiben.




Impressum
Datenschutz