Batch Schleife in Schleife mit Variable
Hallo liebe Community,
ich möchte über ein Batch Ordner auf dem Server öffnen.
Der Aufbau auf dem Server sieht wie folgt aus:
Direct - Directsub - AufD
Y:\Kd001\Pr001\00123345
Y:\Kd001\Pr001\00123346
Y:\Kd002\Pr002\00223345
Y:\Kd002\Pr002\00223346
Y:\Kd003\Pr004\00323346
Y:\Kd003\Pr004\00323347
Y:\Kd003\Pr004\00323348
Jeder dieser Ordner hat nochmals min 8 Unterordnen und diese können auch nochmals Unterordnen haben.
Irgendwie funktioniert dieses verschachtelte Schleife nicht bzw. habe einen Knoten im Kopf
.
Vielleicht könnt ihr mir weiterhelfen.
Danke
ich möchte über ein Batch Ordner auf dem Server öffnen.
Der Aufbau auf dem Server sieht wie folgt aus:
Direct - Directsub - AufD
Y:\Kd001\Pr001\00123345
Y:\Kd001\Pr001\00123346
Y:\Kd002\Pr002\00223345
Y:\Kd002\Pr002\00223346
Y:\Kd003\Pr004\00323346
Y:\Kd003\Pr004\00323347
Y:\Kd003\Pr004\00323348
Jeder dieser Ordner hat nochmals min 8 Unterordnen und diese können auch nochmals Unterordnen haben.
Irgendwie funktioniert dieses verschachtelte Schleife nicht bzw. habe einen Knoten im Kopf
Vielleicht könnt ihr mir weiterhelfen.
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
title Oeffnen vom Ordner
:Start1
echo.
set /p AufD=Nummer eingeben:
set Direct=Y:\
for /f %%n in ('dir %Direct% /A:D /B ') do (
set Directsub=%Direct%\%%n
for /f %%n in ('dir %Directsub% /A:D /B ') do (
IF exist "%Directsub%\%AufD%" goto :AuftrVorh
)
)
:NVorhan
REM cls
echo.
echo Nummer nicht vorhanden/gefunden
echo.
echo ****************** Bitte erneuerte Eingabe *******************
echo.
echo.
goto Start1
:AuftrVorh
set PFAD="%Directsub%\%AufD%"
explorer.exe %PFAD%
exit
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 597452
Url: https://administrator.de/forum/batch-schleife-in-schleife-mit-variable-597452.html
Ausgedruckt am: 11.04.2025 um 14:04 Uhr
7 Kommentare
Neuester Kommentar
Moin,
Ergo: Du bist eine Ebene zu hoch unterwegs.
Warum arbeitest du nicht einfach mit dir /s?
Gruß Thomas
Zitat von @Christian001:
Direct - Directsub - AufD
Y:\Kd001\Pr001\00123345
Y:\Kd001\Pr001\00123346
Y:\Kd002\Pr002\00223345
Y:\Kd002\Pr002\00223346
Y:\Kd003\Pr004\00323346
Y:\Kd003\Pr004\00323347
Y:\Kd003\Pr004\00323348
Du machst quasi foldgendes:Direct - Directsub - AufD
Y:\Kd001\Pr001\00123345
Y:\Kd001\Pr001\00123346
Y:\Kd002\Pr002\00223345
Y:\Kd002\Pr002\00223346
Y:\Kd003\Pr004\00323346
Y:\Kd003\Pr004\00323347
Y:\Kd003\Pr004\00323348
set Direct=Y:\
set Directsub=Y:\Kd001
set AufD=Pr001
Warum arbeitest du nicht einfach mit dir /s?
@echo off
title Oeffnen vom Ordner
:Start1
echo.
set /p AufD=Nummer eingeben:
set Direct=Y:
(For /f "Delims=" %%A in ('dir /s/b/ad "%Direct%\%AufD%"') do (
explorer "%%A"
goto :EoF
)) >Nul 2>&1
echo.
echo Nummer nicht vorhanden/gefunden
echo.
echo ****************** Bitte erneuerte Eingabe *******************
echo.
echo.
goto Start1
Gruß Thomas
Zitat von @Christian001:
Hallo Thomas,
Die Ordner haben mehrere Unterordnen und diese können auch nochmals Unterordnen haben.
Deswegen ja auch /s - so wird in allen Unterordern nach einem Ordner gesucht, der wie die eingegebene Nummer heisst.Hallo Thomas,
Die Ordner haben mehrere Unterordnen und diese können auch nochmals Unterordnen haben.
Oder gibt es eine andere Möglichkeit.
Ja, siehe oben.@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
...
set Directsub=%Direct%\%%n
for /f %%n in ('dir %Directsub% /A:D /B ') do (
...
Steffen
danke für keinen Lösungansatz
Freudscher Versprecher nehme ich an Mindestens die Variablen deren Werte im Schleifenrumpf geändert werden und dort wieder zum Wert aufgelöst werden sollen, wie oben beschrieben updaten.
Bspw.
%Directsub%
zu !Directsub!
.Unabhängig davon gebe ich Thomas aber Recht. Rekursiv mit Option /s zu suchen macht einfach Sinn. Zudem bekommst du so gleich den absoluten Pfad und musst den nicht noch zusammenbauen. Führe doch das DIR Kommando einfach mal in einer CMD Shell aus damit du siehst wie die Ausgabe aussieht...
Steffen
// Edit: Formatierung