Durchsuchen nach
Kategorie: Windows Batch

findstr: Die Zeile darüber ausgeben

findstr: Die Zeile darüber ausgeben

Manchmal hat man Probleme ähnlich wie dieses hier: Man möchte nicht die gesuchte Zeile in einer Datei ausgeben, sondern die Zeile darüber. Und das Ganze soll mit einem Batch-Skript ausgeführt werden. Für dieses Problem habe ich mir einer Testdatei erstellt, die in etwas so aussieht: 123abc234qwe345qwe456abc Alle Zeilen, die über dem gesuchten String abc stehen, sollen ausgegeben werden, also 123456 Das habe ich anschließend in einem Batch-Skript realisiert. Ich hoffe, die Kommentare hierfür sind ausreichend: @echo offSetLocal EnableDelayedExpansionrem set initial…

Weiterlesen Weiterlesen

UCS-2 Kodierung und findstr

UCS-2 Kodierung und findstr

Dateien können verschiedene Kodierungen haben. Das Kommandozeilen-Werkzeug findstr kann in so einem Fall einen gesuchten String in einer Datei nicht finden. Ich hatte eine Datei, die hatte eine UCS-2 Kodierung und beim Aufruf von findstr “abc” utc2.txt kam nichts dabei heraus, obwohl die Textdatei diesen String enthielt. Um den gesuchten String trotzdem zu finden, kann man in so einem Fall auf das SysInternal Tools strings.exe zurückgreifen: strings -nobanner utc2.txt | findstr “abc”

CreateProcess failed: The system cannot find the file specified.

CreateProcess failed: The system cannot find the file specified.

Beim Bau der Bibliothek skia unter Windows bekam ich diese Fehlermeldung: [419/2871] copy ../../third_party/externals/icu/common/icudtl.dat icudtl.dat FAILED: icudtl.dat python …/skia/build/skia/gn/cp.py ../../third_party/externals/icu/common/icudtl.dat icudtl.dat CreateProcess failed: The system cannot find the file specified. ninja: fatal: ReadFile: The handle is invalid. Wie es sich herausgestellt hat, lag das Problem darin, dass ninja versucht hat, Python aufzurufen, Python aber nicht gefunden hat. Genauer gesagt, python.exe. Um die python.exe aus den depot_tools aufrufen zu können, muss man vorher erstmal das Skript update_depot_tools.bat aufrufen (wenn man das…

Weiterlesen Weiterlesen

Anmerkungen zu if errorlevel 0

Anmerkungen zu if errorlevel 0

Ab und an sieht man im Internet Batch-Code, bei denen es um die Abfrage geht, ob der Errorlevel 0 oder ungleich 0 ist. Dabei sieht man Code-Zeilen, die in etwa so aussehen: if errorlevel 0 ( …) else ( …) Diese Abfrage ist aber in vielen Fällen falsch. Im Grunde bedeutet sie: Ist der Errorlevel 0 oder größer. D.h. diese Abfrage kommt fast gar nicht in den else-Teil, weil der Errorlevel meist 0 oder größer ist. Außer man hat ein…

Weiterlesen Weiterlesen

“File not found” beim dir Kommando

“File not found” beim dir Kommando

Mittels des Kommandos dir /b “<Pfad>” kann man sich die Dateinamen in dem Ordner <Pfad> auflisten lassen. Also nur die Dateinamen, ohne den gesamten Pfadnamen und ohne sonstige Informationen. Nun war die Aufgabe nicht alle Dateinamen aufzulisten, sondern nur jene die eine bestimmte Endung hatten. Versucht habe ich dann erst einmal so: dir /b “<Pfad>” *.cmd Ich bekam eine Ausgabe, die mich etwas stutzig gemacht hat: Woher kam die Meldung File not Found? Wie es sich herausgestellt hat, führt diese…

Weiterlesen Weiterlesen

Mit findstr das letzte Zeichen prüfen

Mit findstr das letzte Zeichen prüfen

Mit dem Kommandowerkzeug findstr kann man unter Windows auf das letzte Zeichen eines Strings überprüfen. Eine Art dies zu bewerkstelligen kann man an folgendem Code sehen. Hier wird geprüft, ob die Variable %Project% mit einem Schrägstrich / endet oder nicht. Dabei wird ein Regex verwendet. Das Dollarzeichen in dem Regex steht hier für das Zeilenende, daher auch der “/$”: @ECHO OFFSETLOCAL EnableDelayedExpansionSET “Project=/Folder1″ECHO %Project%| findstr /R /C:”/$” 1>nulecho %ERRORLEVEL%SET “Project=/Folder1/”ECHO %Project%| findstr /R /C:”/$” 1>nulecho %ERRORLEVEL% Bei diesem Code sollte…

Weiterlesen Weiterlesen

findstr Beispiel: Bestimmte Zeilen ausschließen

findstr Beispiel: Bestimmte Zeilen ausschließen

Manchmal muss man mit Hilfe des Tools findstr bestimmte Zeilen ausschließen aus einer langen Liste von Daten. Dies will ich hier an einem kleinen Beispiel zeigen. Angenommen, man hat eine Liste an Zeilen wie diese hier: (TR3919) Power ‘1’ has been deployed to version ‘1’(TR9102) Power ‘2’ has NOT been deployed to version ‘2’Random text and 13773r5, with a big error…(TR1337) complicated(TR1239) error Und nun möchte man alle Zeilen bekommen, die entweder mit (TRXXXX) anfangen (wobei XXXX eine Zahl zwischen…

Weiterlesen Weiterlesen