Batch – Cheatsheet Umlaute nutzen (Kodierung ändern) for-Schleife Dateien auslesen Dateiinhalt suchen und ersetzen Programm starten und beenden Ordner auflisten und in Datei speichern Netzwerklaufwerk hinzufügen und entfernen Umlaute nutzen (Kodierung ändern) Normalerweise werden Batch-Skripte im Texteditor mittels UTF-8 kodiert und gespeichert. Nutzt man darin einen Umlaut (z.B.: Schüler), wird dieser bei der Skript Ausführung falsch dargestellt und z.B.: eine Datei kann nicht gefunden werden. Um zu testen welche Kodierung die Kommandozeile hat, kann man einfach den Befehl „chcp“ eingeben: 850 = Multilingual Die Kodierung kann folgendermaßen geändert werden: ::set Change Code Page für Umlaute = UTF-8 chcp 65001 for-Schleife @ECHO off ::gibt die Zahlen der Variable/Liste aus SET list=1 2 3 4 FOR %%a IN (%list%) DO ( ECHO %%a ) PAUSE Mit dem Parameter /L wird über einen Bereich von Zahlen iteriert (FOR /L): FOR /L %%parameter IN (start,step,end) DO command @ECHO off ::gibt die Zahlen von 0 bis 10 aus FOR /L %%a IN (0,1,10) DO ( echo %%a ) PAUSE Dies kann auch für das Auslesen eines Arrays genutzt werden. Dann muss jedoch die Code-Ausführung verlangsamt werden (enabledelayedexpansion), damit der Array korrekt durchlaufen wird. @ECHO off ::langsame Ausführung wird aktiviert setlocal enabledelayedexpansion SET myArray[0]=Richi Meier SET myArray[1]=Susi SET myArray[2]=Simon FOR /L %%a IN (0,1,2) DO ( ::bei der langsamen Ausführung müssen die ! Ausrufezeichen genutzt werden echo !myArray[%%a]! ) pause exit Dateien auslesen Mit dem Parameter /F wird über Dateien iteriert (FOR /F): FOR /F [„options“] %%parameter IN (filenameset) DO command [„options“] sind optional und müssen nicht angegeben werden. @ECHO off ::gibt jede Zeile der Datei namen.txt aus FOR /f %%a IN (namen.txt) DO ( echo %%a ) Komma separierte Datei ausgeben: @ECHO off ::gibt jede Zeile aus FOR /f "tokens=* delims=," %%a IN (namenMitGeburtsdatum.txt) DO ( echo %%a ) @ECHO off ::gibt nur den Nachnamen aus FOR /f "tokens=2 delims=," %%a IN (namenMitGeburtsdatum.txt) DO ( echo %%a ) @ECHO off ::gibt den Vornamen und den Nachnamen aus FOR /f "tokens=1,2 delims=," %%a IN (namenMitGeburtsdatum.txt) DO ( echo %%a - %%b ) Dateiinhalt suchen und ersetzen @ECHO off ::langsame Ausführung wird aktiviert, damit der loop nacheinander durchlaufen wird setlocal enabledelayedexpansion ::was soll mit was ersetzt werden set stringToFind=Leithauser set stringReplace=Scheglmann (FOR /f "tokens=* delims=," %%a IN (namenMitGeburtsdatum.txt) DO ( ::wurde der String in der aktuellen Zeile gefunden? ECHO %%a | FIND /I "%stringToFind%">Nul && ( set tempLine=%%a SET updatedString=!tempLine:%stringToFind%=%stringReplace%! echo !updatedString! ) || ( echo %%a ) )) pause Der Pipe-Operator (|) übernimmt die Ausgabe eines Befehls und leitet diese an die Eingabe eines anderen Befehls weiter. In diesem Fall wird mittels ECHO die Zeile ausgegeben und an FIND weitergeleitet. Hier: FIND /I „%stringToFind%“>Nul wird das Ergebnis mit >Nul verworfen und nur geschaut ob etwas gefunden wurde. Programm starten und beenden @Echo off tasklist /fi "ImageName eq AnyDesk.exe" && ( taskkill /f /im AnyDesk.exe /t ) || ( cd "C:\Program Files (x86)\AnyDesk" start AnyDesk ) Hier wird das Programm AnyDesk gestartet bzw. beendet, je nachdem ob es gerade läuft oder nicht. Das Skript muss mit Administratorenrechten ausgeführt werden, damit die Prozesse mittels „taskkill“ beendet werden können. Ordner auflisten und in Datei speichern @echo off ::set Change Code Page für Umlaute = UTF-8 chcp 65001 ::Pfad des Skripts SET scriptPath=%~dp0 SET berichtePath=C:\git\berichte\Anwendungsdaten\Berichte\Schüler cd %berichtePath% ::listet nur die Ordner und nur die Namen derer auf dir /d/b > %scriptPath%\getAllSchuelerBerichte.txt Es wird zuerst der Code Page auf UTF-8 gesetzt, damit Umlaute richtig angezeigt und verarbeitet werden können. Dann wird in den Pfad der Ordner gewechselt und diese dann mit dem „dir“-Befehl in eine Datei gespeichert, die am gleichen Ort wie das Skript erstellt wird. Die Parameter „/d/b“ listen nur die Ordner auf und diese nur mit Namen, ohne weitere Informationen. Netzwerklaufwerk hinzufügen und entfernen Mit Hilfe von Batch kannst du einfach ein Netzwerklaufwerk, z.B.: eine NAS-Box, automatisch deinem PC hinzufügen und auch entfernen. ::fügt ein Laufwerk Z: hinzu: net use Z: \\fritz.box\FRITZ.NAS\WD-Elements2621-01 Nach dem Hinzufügen kann es sein, dass du aufgefordert wirst deine Zugangsdaten einzugeben. Willst du das Laufwerk wieder entfernen kann dieses Skript genutzt werden: ::entfernt ein Netzwerklaufwerk mit Buchstaben Z net use Z: /d Wenn du das Laufwerk nicht nur entfernen willst, sondern auch die Anmeldedaten löschen möchtest kannst du das vorherige Skript erweitern: ::entfernt ein Netzwerklaufwerk mit Buchstaben Z net use Z: /d ::entfernt gespeicherte Anmeldedaten (Fritz.Box) cmdkey.exe /delete:Domain:target=fritz.box Manchmal kann es sein, dass beim erneuten Verbinden mit dem Laufwerk die Anmeldedaten nicht gelöscht wurden, obwohl dies mittels „cmdkey.exe“ geschehen hätte sollen. Dann hilft ein Neustart des Computers. Alternativ könnte man auch das Laufwerk verbunden lassen und die Anmeldedaten mittels „cmdkey.exe“ löschen: ::entfernt gespeicherte Anmeldedaten (Fritz.Box) cmdkey.exe /delete:Domain:target=fritz.box Du kannst auch das Batch-Skript automatisch beim Starten des PCs ausführen lassen. Dazu musst du nur das Skript in den Ordner: Autostart einfügen. Diesen kannst du mittels folgendem Befehl öffnen: Die aktuell verbunden Netzwerklaufwerke kannst du dir mit „net use“ anzeigen lassen. Eine Liste aller gespeicherten Anmeldedaten kann mit folgendem Code ausgegeben werden: @echo off ::speichert alle Einträge in CmdKeyListe.txt cmdkey.exe /list > "%TEMP%\CmdKeyListe.txt" ::speichert nur die Ziele in NurZiele.txt findstr.exe Ziel "%TEMP%\CmdKeyListe.txt" > "%TEMP%\NurZiele.txt" FOR /F "tokens=1,2 delims= " %%A IN (%TEMP%\NurZiele.txt) DO ( echo %%B ) ::entfernt die erzeugten Dateien wieder del "%TEMP%\CmdKeyListe.txt" /s /f /q del "%TEMP%\NurZiele.txt" /s /f /q pause exit Links: SS-64 Batch Guide unsere-schule.org × Batch – Cheatsheet Code: Infos: unsere-schule Codes