Zwei Variablen (inkl Counter) sollen Wert bestehender Variable anzeigen
Hallo, ich stehe vor einem Problem und ich bin mir nicht sicher, ob das so leicht zu lösen ist.
Für ein Projekt habe ich verschiedene Postfächer, von denen jedes einen eigenen Ordner hat und jede diverse PDF-Dateien zum verschicken hat.
Nun würde ich gerne als erstes alle PDF-Dateien in den Ordnern zählen. Dafür habe ich jeden Ordner eine Variable verpasst (c1, c2, c3...). In einer for-Schleife sollen für all diese Ordner die Dateien gezählt werden.
Da ich zuvor überprüfe, ob in jedem Ordner (welche die oben genenannten c-Variablen haben) etwas drinnen ist, lasse ich kurz auf Inhalt übprüfen mit einem Counter, welcher C und dem einem hochzählenden Wert. Leider kann ich nicht einfach alle Unterordner durchzählen lassen, weil es hier einige Ordner gibt, welche unberührt bleiben müssen. Hier mal der ganze Code soweit:
Folgendermaßen war es gedacht, wie es laufen sollte: Für jeden Ordner, welche alle unter C:\Scannen\Eingang liegen und von denen jeder eine Variable (c1, c2...) bekommen hat, sollte in der for-Schleife der Inhalt gezählt wird. Mit der Variable cnt wollte ich einen Zähler haben, welchen ich an den Buchstaben c hängen kann und damit sollten die 4 eröffneten Variablen bzw. die Ordner auf Inhalt überprüft werden. Außerdem dient der Counter noch für die eigentliche Zählung.
Irre ich mich oder habe ich das grundlegende Problem, dass ich aus zwei Werten etwas abfragen möchte, was wiederrum eine gesetzte Variable ist? Also in meinem Fall: Buchstaben C + Counter (Beispiel C2) und diese Zusammensetzung soll auf den Inhalt einer bereits gesetzten Variable zeigen, im Beispiel oben wollte ich den Ordner "Avisen" für die for-schleife haben.
Bin ich hier tatsächlich auf einem ziemlich falschen Weg? Hätte jemand eine alternative Lösung bzw. einen Vorschlag für mich?
Für ein Projekt habe ich verschiedene Postfächer, von denen jedes einen eigenen Ordner hat und jede diverse PDF-Dateien zum verschicken hat.
Nun würde ich gerne als erstes alle PDF-Dateien in den Ordnern zählen. Dafür habe ich jeden Ordner eine Variable verpasst (c1, c2, c3...). In einer for-Schleife sollen für all diese Ordner die Dateien gezählt werden.
Da ich zuvor überprüfe, ob in jedem Ordner (welche die oben genenannten c-Variablen haben) etwas drinnen ist, lasse ich kurz auf Inhalt übprüfen mit einem Counter, welcher C und dem einem hochzählenden Wert. Leider kann ich nicht einfach alle Unterordner durchzählen lassen, weil es hier einige Ordner gibt, welche unberührt bleiben müssen. Hier mal der ganze Code soweit:
REM @echo off
setlocal EnableDelayedExpansion
C:
cd C:\Scannen\Eingang
cls
set c1=Verwaltung
set c2=Avisen
set c3=Rechnungen
set c4=Stornos
REM sind noch viel mehr Postfaecher
set cntpdf=0
set cnt=1
goto start
:count
set /a cnt=%cnt%+1
:start
for %%a in (%c%cnt%%\*.pdf) do (set /a cntpdf=!cntpdf!+1)
if not %cnt% equ 4 goto count
echo. Anzahl der PDF-Dateien: %cntpdf%
pause>NUL
Folgendermaßen war es gedacht, wie es laufen sollte: Für jeden Ordner, welche alle unter C:\Scannen\Eingang liegen und von denen jeder eine Variable (c1, c2...) bekommen hat, sollte in der for-Schleife der Inhalt gezählt wird. Mit der Variable cnt wollte ich einen Zähler haben, welchen ich an den Buchstaben c hängen kann und damit sollten die 4 eröffneten Variablen bzw. die Ordner auf Inhalt überprüft werden. Außerdem dient der Counter noch für die eigentliche Zählung.
Irre ich mich oder habe ich das grundlegende Problem, dass ich aus zwei Werten etwas abfragen möchte, was wiederrum eine gesetzte Variable ist? Also in meinem Fall: Buchstaben C + Counter (Beispiel C2) und diese Zusammensetzung soll auf den Inhalt einer bereits gesetzten Variable zeigen, im Beispiel oben wollte ich den Ordner "Avisen" für die for-schleife haben.
Bin ich hier tatsächlich auf einem ziemlich falschen Weg? Hätte jemand eine alternative Lösung bzw. einen Vorschlag für mich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1830821234
Url: https://administrator.de/forum/zwei-variablen-inkl-counter-sollen-wert-bestehender-variable-anzeigen-1830821234.html
Ausgedruckt am: 15.04.2025 um 19:04 Uhr
1 Kommentar
Mache dich mit Schleifen vertraut.
Ungetestet:
Steffen
Ungetestet:
@echo off &setlocal EnableDelayedExpansion
cd /d "C:\Scannen\Eingang"
set "c1=Verwaltung"
set "c2=Avisen"
set "c3=Rechnungen"
set "c4=Stornos"
for /l %%i in (1 1 4) do (
for /f %%j in ('dir /a-d /b "!c%%i!\*.pdf" ^| find /c /v ""') do echo Anzahl der PDF-Dateien in "!c%%i!": %%j
)
pause