Batchprogrammierung - FOR Schleifen - Speichern in Variablen - Ausgabe der Variablen

Mitglied: JimStar

JimStar (Level 1) - Jetzt verbinden

15.03.2016 um 13:55 Uhr, 1000 Aufrufe, 6 Kommentare, 1 Danke

Guten Tag zusammen,

ich habe ein kleines Problem und komme alleine nicht weiter.

Folgende Situation:

Ich hab ein Batchprogramm geschrieben, welches all unsere Netlogon Skripts liest, eine Änderung daran durchführt und anschließend in ein neues Verzeichnis kopiert(Ungefähr 400 Dateien).
Nun würde ich gerne eine Integritätsprüfung des Inhalts der neuen Version einer Batchdatei durchführen..

Das ist der Inhalt der Prüfdatei:


Mit der zweiten For-Schleife kann ich mithilfe des Befehls "findstr /n .*" und dem Delimiter ":" die Zeilennummer ausfindig machen und diese dann in %%g speichern.

Mein Problem ist jetzt, dass ich erstmal durch Zeile 17 eine Ausgabedatei erstellen möchte, welche mir pro Batchdatei anzeigt wie viele Zeilen diese hat. Nur irgendwie funktioniert das setzten der %Counter%-Variable nicht und ich finde in der Ausgabedatei nur folgenden Inhalt:
-> Sprich ohne eine Zahl hinter dem ":"

mit "Do set Counter=%%g" kann ich doch die Variable %Counter% befüllen und anschließend in der ersten Schleife wieder verwenden oder nicht?
Was mache ich falsch?

Danke schon mal für eure Antworten :) face-smile

Gruß
Mitglied: Biber
15.03.2016, aktualisiert um 14:49 Uhr
Moin Jimstar,

wenn du einen Variablenwert innerhalb einer Anweisung, zB einer FOR-Anweisung mehrfach aktualisieren/auslesen müsstest, dann ginge das mit setlocal EnableDelayedExpansion aund "verzögerter Variablenauflösung".

Nach diesen Stichworten kannst du hier im Forum suchen und finden.

aber: in deinem Fall benötigst du die variable "Counter" ja nicht wirklich.
Also ändere die Zeile 17 auf

Grüße
Biber
Bitte warten ..
Mitglied: JimStar
15.03.2016 um 14:19 Uhr
Hallo Biber,

deine Lösung hatte ich auch schon versucht, das Ergebnis davon ist aber folgendes:

Inhalt Ausgabedatei:


Die Ausgabe des Inhalts der Variable %%g muss also außerhalb der zweiten Schleife passieren, sprich in der ersten Schleife.
So zum Beispiel(Was aber auch nicht funktioniert):

Bitte warten ..
Mitglied: JimStar
15.03.2016 um 14:39 Uhr
Hallo Biber nochmal,

ich habe mir mal das Thema "setlocal EnableDelayedExpansion" durchgelesen und das war die Lösung,

Vielen Dank!
Bitte warten ..
Mitglied: MrCount
15.03.2016 um 14:59 Uhr
Hallo JimStar,

es wäre sicher für andere "Suchende" hilfreich, wenn du deine Lösung hier preisgeben würdest. :-D face-big-smile

Gruß
Bitte warten ..
Mitglied: JimStar
15.03.2016 um 15:15 Uhr
Hallo MrCount,

stimmt, da hast du naürlich Recht!
Hier meine Lösung:


Ich habe in der Zeile 1 das "& setlocal enabledelayedexpansion " hinzugefügt und in der Zeile 17 aus %Counter% -> !Counter! gemacht, sodass er die Variablenaktualisierung nicht erst in der neuen Zeile bemerkt, sondern direkt ( So habe ich es verstanden, korrigiert mich wenn ich mich irre :) face-smile ).

Als Ausgabe bekomme ich dann folgendes:

Bitte warten ..
Mitglied: MrCount
15.03.2016 um 15:32 Uhr
Danke! :-D face-big-smile :-) face-smile
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Ein Weg weg von Microsoft. Wie würde man es angehen? Lasst uns doch etwas spinnen
it-fraggleVor 1 TagAllgemeinOff Topic53 Kommentare

Guten Morgen Kollegen, es treibt mich schon seit einigen Jahren um, dass es sinnvoll wäre langsam einen Weg weg von Microsoftprodukten zu finden. Mir ...

Hardware
Versorgungsengpass Chips
NebellichtVor 1 TagAllgemeinHardware22 Kommentare

Allg. frage ich mich ja warum Apple auf ARM frühzeitig gesetzt hat. Die Automobilindustrie gerade Absatzprobleme hat, weil keine Chips mehr geliefert werden können. ...

Windows Server
Server 2019 RDS-CALs für Domänen-Admins? Ernsthaft?
gelöst anteNopeVor 1 TagFrageWindows Server7 Kommentare

Nabend zusammen, ich habe hier heute einen RDS auf Basis eines Server 2019 STD installiert und mit User-CALs lizenziert. Soweit funktioniert auch alles. Nur ...

Festplatten, SSD, Raid
Wie würdet ihr eine Datenrettung machen?
pd.edvVor 22 StundenFrageFestplatten, SSD, Raid11 Kommentare

Hallo, ich arbeite gerade an einem Blog-Artikel zum Thema Datenrettung und würde mich brennend interessieren wie Ihr eine Datenrettung angehen würdet. Sagen wir mal ...

Multimedia
PDF Dokumente KOSTENLOS ausfüllen, wie?
Mrhallo19981Vor 1 TagFrageMultimedia12 Kommentare

Hallo, ich möchte PDF Dokumente kostenlos ausfüllen. Anschließend sollen diese Signiert werden. Signieren tu ich mit einem Zertifikat von Adobe. Deswegen ist es wichtig, ...

Windows Server
Lokaler DNS verlangsamt Internet?
gelöst Rattical84Vor 9 StundenFrageWindows Server20 Kommentare

Hallo zusammen, ich habe hier eine Domäne mit dem Domänencontroller als DNS-Server. Das ist der einzige DC und DNS-Server im Netz. Jetzt habe ich ...

Ubuntu
Installiert auf Rechner
khaldrogoVor 13 StundenFrageUbuntu9 Kommentare

Hallo Leute, Wir haben einen neuen Server bekommen, auf dem wir per Remotedesktopverbindung verbunden sind und arbeiten. Auf dem Server sind leider nicht alle ...

Windows 10
Blog 2: Mal wieder Microsoft haten?
GrueneSosseMitSpeckVor 1 TagBlogWindows 102 Kommentare

und allseits beliebt: die Kirsche blüht vor dem Haus. Also endlich mal die neue Kamera ausgepackt, ein paar Fotos geknipst, und dann? USB Kabel ...