StartUp – Level Up
Kurzinformation: Das hier behandelte Script von mir sorgt für einen effektiveren und schnelleren Start des Rechners und kontrollierte Ausführung eines Autostarts. Seit bitte gnädig. Das Script war nur schlampig gebastelt und dachte nie das es so gut wird das ich es überall einsetze und sogar Kollegen es schon im Einsatz haben.
Ich war es immer wieder leid das wenn ich „mal eben kurz“ den Rechner einschalten wollte, alle hunderte von Fenster die ich benötigte geöffnet wurden. Vor allem auf dem Arbeitsrechner wo sowieso immer allen von selbst starten wollte. Ebenso war es mühselig alle Programme öffnen zu müssen die man noch braucht. Mein StartUp brauchte also ein Level Up!
Ich deaktivierte alle Autostart Möglichkeiten. Entweder im Programm selbst (z.B. Discord, Steam) und alle Dienste (z.B. Skype 4 Business) als auch alle Dateien im Autostart. Dann erstellte ich ein Script und speicherte es als Stapelverarbeitungsdatei im Autostart ab.
Beginn des Scripts märzte das Problem aus wenn man „mal eben“ den Rechner anmachen wollte um z.B. nur mal was zu drucken. Hierbei handelt es sich um eine einfache Benutzerabfrage, ob das Script gestartet werden soll.
@echo off
:start
Echo Autostartscript starten? [J] / [N]
set /p auswahl=
For %%A in (J N) Do if /i '%auswahl%'=='%%A' goto :Auswahl_%%A
Echo Falsche Eingabe&Pause>NUL
cls
Goto startAls erstes wird üblich für Stapelverarbeitung, das Echo deaktiviert damit die Ausgabe in der Konsole noch lesbar bleibt. Danach setzen wir die erste Sprungmarke (Ja ich weiß! Sprungmarken sind auch mir ein Dorn im Auge aber machen bei solch kleinen Scripten einfacher als alles andere)
Danach kommt per Echo die Abfrage als Text denn mit dem SET Befehl erzeuge ich dank des Switches „/p“ eine Prompt beim Benutzer und lasse mir die Eingabe in die Variable Auswahl schreiben.
In der For-Schleife überprüfen wir nun ob die entsprechenden Eingabe auf eine unserer in der Klammer befindlichen Optionen zutrifft. Ist dies der Fall wird goto :Auswahl_J oder Auswahl_N aufgerufen.
Das doppelte %-Zeichen ist wichtig!
Die Notation für Variablen wäre bei einer CMD-Umgebung mit einem %-Zeichen zu deklarieren. Allerdings wird dieses Script als Batch ausgeführt was bedeutet das hier ein doppeltes Prozentzeichen verwendet werden muss um eine Umgebungsvariable zu deklarieren.
Hierzu wird der erste Wert in der Klammer in %%A gesetzt. Hier z.B. „J“. Darauf folgt im DO der Schleife ein IF das überprüft ob die beiden Strings gleich sind. Der Switch /i davor gibt nur an das die Überprüfung ohne -Case stattfinden soll.
Groß/Kleinschreibung
Der Parameter -Case bedeutet Casesensitiv und das ist im Programmierbereich sehr wichtig. Viele Interpreter arbeiten Casesensitiv bei den Kommandos und Variablen. Also immer schön darauf achten!
Die Sprungmarke Auswahl_N
Bei der Sprungmarke Auswahl_N wird lediglich ausgegeben das kein Autostart durchgeführt wird und das Script wird nach dem Pause Befehl beendet. Die Ausgabe von Pause wird in die Nulldatei geschrieben.
:Auswahl_N
Echo Autostart wird nicht ausgefuehrt!&Pause>NUL&Exit
exitDie Sprungmarke Auswahl_J
Bei der Sprungmarke Auswahl_J wird als erstes eine Sekundenzahl in die Variable „waittime“ geschrieben. Diese gibt die Zeit an die zwischen den einzelnen Aufrufen gewartet wird die ich mit einem Ping realisiert habe.
Der Aufbau ist simpel und besteht aus Ansage, Ausführung und Wartezeit. Erst erfolgt mittels Echo eine Ausgabe welches Programm ich jetzt starten danach folgt ein start Befehl womit ich eine externe Datei aufrufe. Danach folgt dann der ping mit der Wartezeit. Einzig alleinstehend ist der erste Aufruf wo ich meine KDBX Datei aufrufe. Hier wartet das Script mit PAUSE auf einen Tastendruck da ich mein Masterpasswort eingeben muss. Hier entstand auch die Wartezeit damit ich mit dem Keepass Shortcut bei diversen Programmen direkt das Passwort eingeben konnte.
:Auswahl_J
set waittime=5
Echo "Keypass wird gestartet"
start "" "C:\...\Meine_Keepass_Datei.kdbx"
Echo "Warte auf weiteren Befehl"&pause> nul
Echo "Outlook wird gestartet"
start "" "C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE"
@ping -n %waittime% localhost> nul
Echo "Telegram wird gestartet"
start "" "C:\...\Telegram.exe"
@ping -n %waittime% localhost> nul
Echo "Firefox wird gestartet"
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" -Profilemanager
@ping -n %waittime% localhost> nul
Echo "Notepad++ wird gestartet"
start "" "C:\Program Files\Notepad++\notepad++.exe"
@ping -n %waittime% localhost> nul
Echo "mRemoteNG wird gestartet"
start "" "C:\Program Files (x86)\mRemoteNG\mRemoteNG.exe"
@ping -n %waittime% localhost> nul
Echo "Teams wird gestartet"
start "" "C:\Users\MEIN USER\AppData\Local\Microsoft\Teams\Update.exe" --processStart "Teams.exe"
@ping -n %waittime% localhost> nul
exitHier noch ein paar Hinweise zu einigen Programmen:
- Firefox: Das Argument Profilemanager ist Firefox nicht notwendig. Da ich aber mit mehreren Profilen z.B. Arbeit und Privat arbeite trenne ich diese so.
- Teams: MS Teams wird über die Update.exe mit dem Argument –processStart „Teams.exe“ gestartet. Wenn bei dir auf der Arbeit soetwas wie „–process-start-args „–profile=AAD““ steht bedeutet das, dass er dein Active Directory Profil aufruft und dich damit anmeldet. Öffne dennoch
- Outlook: Outlookpfad liegt bei mir auf Office16. Das kann sich je nach Version ändern und liegt auch mal bei Office14/Office15/Office16/Office19. usw.
Programmpfade /Argumente finden
Wenn du normalerweise ein Icon anklickst um dein Programm zu starten kannst du dort auch rausfinden wo das eigentliche Programm gestartet wird. Hier klick einfach mit rechts auf das Icon und wähle Eigenschaften aus.
Wichtig ist hier der Part „Ziel:“
Wichtig ist das zwischen start und dem eigentlichen Pfad noch die beiden Anführungszeichen stehen. Man gibt damit bei Wunsch einen Fenstertitel mit an. Möchte man das nicht dann muss man Sie dennoch mit angeben aber einfach leer lassen. Denn der Befehl wertet mit dem ersten Argument den „WindowTitle“ aus und danach erst den Pfad den ich wegen Leerzeichen immer in Anführungszeichen setze.
Am Ende sieht die Grundlage immer folgendermaßen aus:
start "Fenstertitel" "Pfad zur Datei"Ich hoffe das euch das Script auch euren Morgen ein wenig leichter gestaltet.
Wenn da nicht noch eine Erweiterung wäre…
Zusatz: Ein Kollege meldete mir das bei Ihm keine Sitzungen im Internetbrowser gespeichert werden. Hier muss er jedes mal sehr umständlich alle Seiten neu aufrufen. Wer mit vielen Tabs arbeitet kennt das Problem. Um das zu lösen muss man nur das Script um folgende Zeile erweitern:
start /b DEIN_FAV_BROWSER "URL1" "URL2" "URL3"Jetzt kann das mit zwei URL´s noch übersichtlich sein aber was wenn man wie mein Kollege 15 URL´s in etwa dieser Länge hat: „https://SUBDOMAIN.DOMAIN.TLD/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER“
Hier tragen wir einen Zeilenumbruch in der Batch ein der uns eine Lesbarkeit der Zeilen ermöglicht. Einen Zeilenumbruch bewirkt man mit dem Zeichen ^. Dieses Zeichen leitet einen Zeilenumbruch ein und löscht in der neuen Zeile das erste Zeichen.
Der Switch /b sorgt außerdem dafür das keine neue Konsole dafür geöffnet wird!
start /b DEIN_FAV_BROWSER ^
"URL1" ^
"URL2" ^
"URL3"Leerzeichen zu Beginn der Zeile beachten
Wichtig ist das sich an jeder Zeile zu Beginn ein Lesezeichen oder ein anderweitiges Zeichen befindet. Das ^ sorgt nicht nur für den Zeilenumbruch sondern löscht dabei auch das erste Zeichen der neuen Zeile. Nehmen wir es einfach als optische Einrückung damit wir wissen das die Zeile noch nicht vorbei ist.
Und schon habt Ihr auch eure Lieblingsseiten auf einen Schlag geöffnet.