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.