Batchprogrammierung - FOR Schleifen - Speichern in Variablen - Ausgabe der Variablen
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
Gruß
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:
@echo off
set ziel=C:\Users\name\Desktop\Logon-Skript_umschreiben\Daten\Neu\test\
set dateinamen=C:\Users\name\Desktop\Logon-Skript_umschreiben\valid\dateinamen.txt
set ausgabe=C:\Users\name\Desktop\Logon-Skript_umschreiben\valid\ausgabe.txt
del %dateinamen% > nul
del %ausgabe% > nul
pushd %ziel%
dir /B *.bat > %dateinamen%
For /f "delims=" %%i in (%dateinamen%) do echo %%i & (For /f "delims=:" %%g in ('findstr /n .* %ziel%%%i') DO SET Counter=%%g)& echo %%i:%Counter%>>%ausgabe%
pause
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:
test.bat:
test10.BAT:
test2.BAT:
test3.BAT:
test4.BAT:
test5.BAT:
test7.bat:
test8.bat:
test9.BAT:
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
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 299155
Url: https://administrator.de/contentid/299155
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Jimstar,
wenn du einen Variablenwert innerhalb einer Anweisung, zB einer FOR-Anweisung mehrfach aktualisieren/auslesen müsstest, dann ginge das mit
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
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
...
For /f "delims=" %%i in (%dateinamen%) do echo %%i & (For /f "delims=:" %%g in ('findstr /n .* %ziel%%%i') DO echo %%i:%%g>>%ausgabe%
Grüße
Biber