Batch: FOR-IF-FOR Schleife und Var aus zwei Var zusammensetzen

Mitglied: .Sessl

.Sessl (Level 1) - Jetzt verbinden

22.02.2016, aktualisiert 23.02.2016, 1408 Aufrufe, 6 Kommentare, 3 Danke

Hallo zusammen,

ich hab "mal wieder" ein, eig. zwei Probleme, bei dem ich Eure Hilfe benötige, da mir das Netz nicht weiter helfen konnte, bzw. ich nicht genau wusste, wonach ich suchen sollte.
Zum ersten Problem:

Ich möchte aus der Datei %importlog% die letzte Zeile auslesen, sollte diese leer sein, hätte ich gern die vorletzte Zeile.
Ich weiß, dass in einer von beiden etwas drin steht, nur nicht genau in welcher, da gern mal eine Leerzeile angehängt wird.
Der Code ansich funktioniert als "Einzeiler", jedoch nicht in einer erweiterten IF Abfrage.



Beim zweiten Problem geht es um die Zusammensetzung von Variablen aus bereits bestehenden Variablen!
%jobs% beinhaltet meine Backupjobs und ich möchte gern wissen, wie viele gelaufen sind.
Also lass ich durch die Subroutine an die Variable "job" die Jobnummer anhängen "job1", "job2", etc.. Dann möchte ich per einfacher IF Abfrage wissen, ob die benötigte Anzahl gelaufen ist, falls nicht möchte ich die Anzahl der Jobs ausgeben die gelaufen sind.

Also lasse ich mir mittels der Schleife noch mal für die Anzahl der Läufe die Nr. ausgeben und möchte den Jobnamen, der ja schon in den Variablen "job1", "job2", etc. drin steht ausgeben.
Jedoch bekomme ich es nicht hin, eine Variable aus zwei zusammen zusetzen, habe schon !var%%a!, %var[%%a]% und auch wenn ich vorher die Variable "joba" setze, klapt es nicht: %job!joba!%.
Setze ich jedoch manuell die Zahl ein: %job1% oder. !job! bekomme ich die Ausgabe wie gewünscht (beides funktioniert).

Gibt es eine Möglichkeit das so umzusetzen, bzw. nach was hätte ich online suchen müssen um eine Lösung zu finden?



Vielen Dank!!!

Viele Grüße
Tobias
Mitglied: 114757
114757 (Level 4)
LÖSUNG 22.02.2016, aktualisiert 23.02.2016
Mit Powershell aus den letzte beiden Zeilen die ermitteln welche nicht leer ist, kein Problem
Gibt immer die letzte Zeile mit Inhalt zurück. Einfach auf mehrere Zeilen erweiterbar indem man die Zahl bei -tail 2 wie gewünscht abändert.

Gruß jodel32
Bitte warten ..
Mitglied: Friemler
LÖSUNG 22.02.2016, aktualisiert 23.02.2016
Hallo Tobias,

zur Lösung Deines zweiten Problems ersetze die Zeilen 4 bis 21 Deines zweiten Scripts durch folgende Zeilen:

Wie funktioniert's? Du musst den Batchscript-Interpreter dazu zwingen, die Codezeilen, in denen Du Variablennamen dynamisch per Script erzeugst (die Zeilen 5 und 16 in meinem Schnipsel), zweimal zu parsen. Dazu steht der CALL-Befehl vor dem SET. Die Prozentzeichen um den dynamischen Teil des Variablennamens (in Zeile 5 komplett, in Zeile 16 bei der Zuweisung nur der numerische Teil) müssen dann verdoppelt werden.

Gruß
Friemler
Bitte warten ..
Mitglied: Endoro
23.02.2016, aktualisiert um 12:42 Uhr
Hey,
die letzte nicht-leere Zeile einer Textdatei bekommst du so:

Und die for-Schleife in deinem zweiten Code sollte so gehen:

Hast du keine Fehlermeldung bekommen, etwa "is not recognized as an internal or external command,"?

Gruß, Endoro
Bitte warten ..
Mitglied: .Sessl
23.02.2016 um 16:23 Uhr
Hi jodel32,

vielen Dank für die schnelle Hilfe und Lösung des ersten Problems!


Viele Grüße
Tobias
Bitte warten ..
Mitglied: .Sessl
23.02.2016 um 16:26 Uhr
Hi Friemler,

vielen Dank für die Lösung des zweiten Problems!!
Wieder etwas gelernt und eine Schleife weniger die durchlaufen werden muss.

Danke!


Viele Grüße
Tobias
Bitte warten ..
Mitglied: .Sessl
23.02.2016 um 16:33 Uhr
Hi Endoro,

danke für deine Antwort!

Zum Problem mit der letzten Zeile, ich hatte auch schon "usebackqdelims" probiert, jedoch scheint mit diesem Befehl die Logdatei nicht vollständig durchgegangen zu werden, da er mir als "letzte" Zeile eine aus der Mitte ausspuckt. Dieses Logfile hat akt. ca. 600k Zeilen, können aber weitaus mehr werden, da ist mir das mit PS schon sicherer.

Zum zweiten Code, die FOR-Schleife funktioniert, ruft jedoch ein externes Programm auf und übergibt die Dateien an die Subroutine:

Ich hatte nur das Problem mit den dynamischen Variablennamen.

Trotzdem Danke!

Gruß
Tobias
Bitte warten ..
Heiß diskutierte Inhalte
Sicherheit
Verpackter Laptop entwendet
r0x3llVor 1 TagFrageSicherheit11 Kommentare

Hallo. Mir wurde aus dem Büro ein noch verpackter Dell XPS Laptop mit einem Wert von ca 3.500€ gestohlen. Kann man da was orten? ...

Windows 10
Netzwerkzugriff intern extern blockiert nach Aufbau NordVPN Verbindung
gelöst Slavik-10Vor 1 TagFrageWindows 1030 Kommentare

hallo Leute, ich habe mir vor kurzem ein VPN Anbieter bestellt. Das Problem an der ganzen Sache ist, sobald eine VPN Verbindung zu einem ...

Off Topic
Namenskonzept Kundengeräte
bitnarratorVor 1 TagFrageOff Topic5 Kommentare

Hallo, ich möchte gerne einmal die Diskussion anstoßen, weil ich eine hier in diese Richtung noch nichts gefunden habe. Es geht um die Bennenung ...

Netzwerkgrundlagen
Router für neues Heimnetzwerk - was will man 2021 haben?
billy01Vor 1 TagFrageNetzwerkgrundlagen7 Kommentare

Guten Abend zusammen, nachdem sich bei mir viel getan hat, stehe ich nun vor einem Umzug und dem Neuaufbau meines Heimnetzwerkes. Also weg von ...

Windows Server
Kein Internetzugriff bei einem Domänenclient
KerberoVor 1 TagFrageWindows Server15 Kommentare

Hallo community, ich habe ein ganz komisches Verhalten eines Clients bei mir. Ich habe eine kleine Domäne (6 Clients und ein Windows Server 2016 ...

LAN, WAN, Wireless
2x Fritzbox 7590 mit separatem DSL über WAN verbinden
gelöst FailixVor 21 StundenFrageLAN, WAN, Wireless19 Kommentare

Liebes Administrator Forum, Ich bin schon länger passiver Lese und habe mich jetzt entschlossen mit einer Frage den ersten Post hier zu schreiben. Über ...

Off Topic
Wie sieht eine korrekte IT-Organisation aus?
imebroVor 4 StundenFrageOff Topic17 Kommentare

Hallo, da unser IT-Verantwortlicher ja vor einem Jahr gehen musste, stelle ich mir die Frage, wie denn eine korrekte IT-Organisation überhaupt aussehen muss. Zur ...

LAN, WAN, Wireless
Cat 7 Patchkabel mit nur 11MBits im Download
gelöst RickHHVor 19 StundenFrageLAN, WAN, Wireless7 Kommentare

Moin zusammen, ich habe mir soeben ein paar Patchkabel (aus einem Cat 7 Kabel) fertig gemacht. Die Belegung ist: 1 weiß/grün 2 grün 3 weiß/orange 4 blau 5 weiß/blau ...