spinnifex
Goto Top

Wenn.Dann durch eine Text-Datei bzw. Zeile steuern

Hallo allerseits,

in einer Batch erstelle ich an der Command Line (Win10) einem Screenshot, daraus verschiedene Auszüge und schreibe die Bild-Info dann in .txt-Dateien. Die Bildinhalte sind dynamisch, weshalb ich einen Wert aus einer Datei als Wenn/Dann-Kriterium festgelegt habe.

Meine Datei heisst test.txt und das letzte (= 27.) Zeichen der 9. Zeile ist entweder "2" oder "1". Wenn der Wert "2" ist, soll die Batch einfach weiterlaufen, wenn "1" die Batch neu starten, also wieder einen Screenshot erstellen, usw.
Eigentlich reicht der eine Wert für die Weiche. Wenn es einfacher (und für einen CMD-Laien verständlicher) ist, die ganze (immer gleich lange) Zeile zu vergleichen, geht das natürlich auch. Unten habe ich das Ganze noch mal als Pseudo-Code dargestellt.

Die Batch an sich funktioniert, nur das Auslesen des einen Werts und die Weiche kann ich in "Commändisch" nicht (in VBA wär's kein Problem). Mag mir jemand auf die Sprünge helfen?

Vielen Dank und schönes Wochenende!

Spinnifex

Pseudo-Code (wird mit Excel-VBA aufgerufen)
cmd-Fenster minimieren
Start:
Browser im Vollbildmodus starten
Screenshot erstellen und als BMP speichern
Browser schließen
Ausschnitt aus BMP erstellen, in s/w-Grafik umwandeln und Datei-Info in test.txt schreiben
### gesuchte Weiche:
WENN Zeile 9, Zeichen 27 in test.txt GLEICH "1" DANN gehezu //Start// SONST mach einfach weiter  
###
Weitere Auschnitte und txt-Dateien aus dem BMP erstellen
P.S. Die txt-Dateien werden in VBA ausgewertet, um Excel zu steuern. Excel soll solange still halten, bis die erfoderlichen txt-Dateien validiert sind.

Content-Key: 618005

Url: https://administrator.de/contentid/618005

Printed on: February 27, 2024 at 23:02 o'clock

Member: rubberman
rubberman Oct 31, 2020 updated at 16:52:31 (UTC)
Goto Top
Ungetestet
<"test.txt" (for /l %%i in (1 1 9) do set /p "line=")  
echo %line:~26,1%
Steffen
Member: spinnifex
spinnifex Oct 31, 2020 at 17:07:48 (UTC)
Goto Top
Hallo Steffen,

wenn ich das richtig beobachte, durchläuft Dein Skript die txt-Datei zeilenweise bis sie in Zeile 9 tatsächlich den richtigen Wert ausspuckt. Lässt sich diese Zeile auch direkt/ohne Schleife adressieren?

... was übrigens heißen will, dass das ungeteste Skript schon mal seinen Dienst tut. Dankeschön dafür!

Grüße Sp...
Member: rubberman
Solution rubberman Oct 31, 2020 at 17:11:57 (UTC)
Goto Top
Lässt sich diese Zeile auch direkt/ohne Schleife adressieren?
Jein.
for /f "usebackq skip=8 delims=" %%i in ("test.txt") do (set "line=%%i" &goto endloop)  
:endloop
Noch schlimmer, oder?

Steffen
Member: spinnifex
spinnifex Oct 31, 2020 at 17:17:48 (UTC)
Goto Top
Grins!! Stimmt! Schlimmer!!

Vor allem noch unverständlicher für einen Nicht-Commandanten...

Aber auf Deine Grundlage konnte ich meine Aufgabe lösen:

<"test.txt" (for /l %%i in (1 1 9) do set /p "line=")  
rem echo %line:~26,1%
if %line:~26,1% EQU 1 echo "Treffer"  

Vielen Dank aber auch und ein schönes/gesundes Wochenende!

Spinnifex