Per Batch-Schleife aus Liste von Verzeichnissen in das zuletzt erstellte wechseln
Hallo Team,
ich suche Unterstützung bei folgender Aufgabe:
Basierend auf dem Rootordner Bsp: c:\temp\2020\10\CTL_DAT_MASTER soll aus einer Liste von Verzeichnissen in das zuletzt erstelle gewechselt werden und von dort
weitere Skripte aussgeführt werden.
Problem ist Loop über Verzeichnisse und speichern des Namens des zuletzt erstellten Verzeichnisses in Variable und dann per cd wechseln
Einziges Kriterium ist das der Name lieferung am Anfang steht.
Ich nutze nur für diese speziellen Aufgabenstellungen Batch habe keine richtige Lösung im Web gefunden und bitte um Unterstützung.
dir manuell auf Verzeichnisliste
30.09.2020 12:54 12r <DIR> .
30.09.2020 12:53 12r <DIR> ..
30.09.2020 12:56 12r 0 for
28.09.2020 14:11 2r <DIR> lieferung_20200628_140610_Lieferung_gesamt_KV_Neu4
28.09.2020 07:14 7r <DIR> lieferung_20201228_071221_Lieferung_gesamt_KV_Neu3
31.08.2020 10:42 10r <DIR> lieferung_20201431_101444_KV_Gesamt-Versch-Container
25.09.2020 10:34 10r <DIR> lieferung_20201625_101620_Lieferung_gesamt_KV_Neu
28.09.2020 06:42 6r <DIR> lieferung_20203725_133717_Lieferung_gesamt_KV-Neu2
01.09.2020 12:55 12r <DIR> lieferung_20204001_124025_KV_Gesamt-2-Container-DPKT
23.09.2020 07:42 7r <DIR> lieferung_20205623_065621_Lieferung_gesamt_klein_KV
25.08.2020 13:11 1r <DIR> lieferung_20205625_125615_KV_Basis-Regelupdate
ich suche Unterstützung bei folgender Aufgabe:
Basierend auf dem Rootordner Bsp: c:\temp\2020\10\CTL_DAT_MASTER soll aus einer Liste von Verzeichnissen in das zuletzt erstelle gewechselt werden und von dort
weitere Skripte aussgeführt werden.
Problem ist Loop über Verzeichnisse und speichern des Namens des zuletzt erstellten Verzeichnisses in Variable und dann per cd wechseln
Einziges Kriterium ist das der Name lieferung am Anfang steht.
Ich nutze nur für diese speziellen Aufgabenstellungen Batch habe keine richtige Lösung im Web gefunden und bitte um Unterstützung.
::Anpassen Verz. Regelupdate CTL_DAT für Fachtest momentan manuell in das aktuelleste Lieferverz. wechseln
cd "c:\temp\2020\10\CTL_DAT_MASTER"
::manuell
set "rootfolder=c:\temp\CTL_DAT_MASTER"
set "Neue="
::set "targetfolder=c:\temp\\%jahr%\Q%quarter%_%jahr%\CTL_DAT_MASTER"
echo %rootfolder%
pause
::Zeige Ordner an
::delims Trennzeichen angeben
for /f "tokens=* delims=" %%g IN ('dir /B /AD /TC /O-D "%rootfolder%\*"') DO @(
::for /f "tokens=* delims=" %%g IN ('dir /B /AD /TC /O-D "%rootfolder%\*"') DO set "Neue=%%i"
::for /f "delims= " %%a in ('%rootfolder%^|findstr /i /l "spsswin.exe"') do echo %%a
::for /f "tokens=lieferung* "delims= " %%a in ('dir %rootfolder%^|findstr /i /l "test"') do echo %%a
(
dir "!rootfolder!\%%g"
::cd "!rootfolder!\%%g"
echo %Neue%
pause
cd %Neue%
)
echo %Neue%
dir manuell auf Verzeichnisliste
30.09.2020 12:54 12r <DIR> .
30.09.2020 12:53 12r <DIR> ..
30.09.2020 12:56 12r 0 for
28.09.2020 14:11 2r <DIR> lieferung_20200628_140610_Lieferung_gesamt_KV_Neu4
28.09.2020 07:14 7r <DIR> lieferung_20201228_071221_Lieferung_gesamt_KV_Neu3
31.08.2020 10:42 10r <DIR> lieferung_20201431_101444_KV_Gesamt-Versch-Container
25.09.2020 10:34 10r <DIR> lieferung_20201625_101620_Lieferung_gesamt_KV_Neu
28.09.2020 06:42 6r <DIR> lieferung_20203725_133717_Lieferung_gesamt_KV-Neu2
01.09.2020 12:55 12r <DIR> lieferung_20204001_124025_KV_Gesamt-2-Container-DPKT
23.09.2020 07:42 7r <DIR> lieferung_20205623_065621_Lieferung_gesamt_klein_KV
25.08.2020 13:11 1r <DIR> lieferung_20205625_125615_KV_Basis-Regelupdate
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 609184
Url: https://administrator.de/forum/per-batch-schleife-aus-liste-von-verzeichnissen-in-das-zuletzt-erstellte-wechseln-609184.html
Ausgedruckt am: 04.04.2025 um 11:04 Uhr
1 Kommentar
Moin,
du hast doch quasi bereits alles. Die For-Schleife zeigt dir die Verzeichnisse nach Erstellungsdatum sortiert in absteigender Reihenfolge - der 1. Eintrag, den dir die For-Schleife liefert, ist folglich der zuletzt erstellte Ordner.
Du musst also lediglich nach dem ersten Eintrag aus der Schleife rausspringen, damit ältere Verzeichnisse nicht mehr verarbeitet werden.
Gruß Thomas
du hast doch quasi bereits alles. Die For-Schleife zeigt dir die Verzeichnisse nach Erstellungsdatum sortiert in absteigender Reihenfolge - der 1. Eintrag, den dir die For-Schleife liefert, ist folglich der zuletzt erstellte Ordner.
Du musst also lediglich nach dem ersten Eintrag aus der Schleife rausspringen, damit ältere Verzeichnisse nicht mehr verarbeitet werden.
@echo off
set "rootfolder=c:\temp\CTL_DAT_MASTER"
for /f "Delims=" %%g in ('dir /B /AD /TC /O-D "%rootfolder%"') do (
cd /d "%rootfolder%\%%g"
goto :continue
)
:continue
:: Mache was auch immer du in dem Verzeichnis tun willst
Gruß Thomas