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-ID: 618005

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

Ausgedruckt am: 25.11.2024 um 07:11 Uhr

rubberman
rubberman 31.10.2020 aktualisiert um 17:52:31 Uhr
Goto Top
Ungetestet
<"test.txt" (for /l %%i in (1 1 9) do set /p "line=")  
echo %line:~26,1%
Steffen
spinnifex
spinnifex 31.10.2020 um 18:07:48 Uhr
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...
rubberman
Lösung rubberman 31.10.2020 um 18:11:57 Uhr
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
spinnifex
spinnifex 31.10.2020 um 18:17:48 Uhr
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