Hallo in die Runde,
ich habe mit der Hilfe der KI ein Skript erstellt, dass Ordner von einem Ausgangsordner in einen Zielordner übertragen soll. Dabei soll nach jedem zehnten Ordner ein neuer "Stapelordner" gebildet werden, der aus dem aktuellem Datum und einer fortlaufenden Nummer besteht. Soweit funktioniert alles nur wird zwar die GroupNumber nach dem 10.Ordner auf 2 erhöht, jedoch trotzdem kein neuer Zielordner mit "2025-12-17-2" generiert und alles weiterhin im ersten Stapel unter "2025-12-17-1" abgelegt. Hat jemand eine Idee, wo der Denkfehler ist?
Mir scheint das Problem in der Zeile:
Für eine Hilfe wäre ich sehr dankbar.
Viele Grüße
Hier der gesamte Code:
ich habe mit der Hilfe der KI ein Skript erstellt, dass Ordner von einem Ausgangsordner in einen Zielordner übertragen soll. Dabei soll nach jedem zehnten Ordner ein neuer "Stapelordner" gebildet werden, der aus dem aktuellem Datum und einer fortlaufenden Nummer besteht. Soweit funktioniert alles nur wird zwar die GroupNumber nach dem 10.Ordner auf 2 erhöht, jedoch trotzdem kein neuer Zielordner mit "2025-12-17-2" generiert und alles weiterhin im ersten Stapel unter "2025-12-17-1" abgelegt. Hat jemand eine Idee, wo der Denkfehler ist?
Mir scheint das Problem in der Zeile:
zu liegen. Allerdings verstehe ich noch, wo das Problem liegt.:: Aktualisiere den groupFolder mit der neuen groupNumber
set groupFolder=%destinationFolder%\%dateFormatted%-%groupNumber%
Für eine Hilfe wäre ich sehr dankbar.
Viele Grüße
Hier der gesamte Code:
Code:
@echo off
setlocal enabledelayedexpansion
:: Verzeichnisse festlegen
set sourceFolder=H:\Testowershell\Meine Ordner
set destinationRoot=H:\Testowershell\Neuer Ordner
:: Überprüfe, ob das Quellverzeichnis existiert
if not exist "%sourceFolder%" (
echo Quellverzeichnis "%sourceFolder%" wurde nicht gefunden!
pause
exit /b
)
:: Datum des Antragstags extrahieren (für deutsches Format DD.MM.YYYY)
for /f "tokens=1-3 delims=." %%a in ('echo %date%') do (
set day=%%a
set month=%%b
set year=%%c
)
:: Ersetze den Punkt mit Bindestrichen, um ungültige Zeichen im Dateipfad zu vermeiden
set dateFormatted=%year%-%month%-%day%
:: Zielordner für den Antragstag erstellen
set destinationFolder=%destinationRoot%\%dateFormatted%
if not exist "%destinationFolder%" mkdir "%destinationFolder%"
:: Ordner zählen und Stapeln
set counter=0
set groupNumber=1
:: Erstelle den ersten Stapelordner
set groupFolder=%destinationFolder%\%dateFormatted%-%groupNumber%
mkdir "%groupFolder%"
:: Zeige die Dateien im Quellordner an, um sicherzustellen, dass sie gefunden werden
echo Folgende Ordner werden verarbeitet:
dir "%sourceFolder%"
:: Ordner verschieben
for /d %%f in ("%sourceFolder%\*") do (
:: Überprüfen, ob es sich um einen Ordner handelt
if exist "%%f" (
echo Verarbeite Ordner: %%f
set /a counter+=1
echo Zähler ist jetzt: !counter!
:: Wenn der Zähler 10 überschreitet, erstelle einen neuen Stapel
if !counter! geq 10 (
echo Neuer Stapel erforderlich!
:: Erhöhe die groupNumber und setze den Zähler zurück
set /a groupNumber+=1
set counter=1
:: Zeige den Wert von groupNumber, um sicherzustellen, dass sie korrekt erhöht wurde
echo Neuer groupNumber-Wert: !groupNumber!
:: Aktualisiere den groupFolder mit der neuen groupNumber
set groupFolder=%destinationFolder%\%dateFormatted%-%groupNumber%
:: Überprüfe den Ordnerpfad
echo Überprüfe, ob Ordner existiert: !groupFolder!
:: Stelle sicher, dass der Ordner existiert
if not exist "!groupFolder!" (
echo Erstelle neuen Stapelordner: !groupFolder!
mkdir "!groupFolder!"
) else (
echo Der Stapelordner !groupFolder! existiert bereits!
)
)
:: Zeige den Pfad des Ordners an, um sicherzustellen, dass er korrekt ist
echo Verschiebe Ordner "%%f" nach "!groupFolder!"
:: Ordner verschieben
move "%%f" "!groupFolder!"
)
)
echo -----------------------------------
echo Ordner wurden erfolgreich in Zehnerstapeln verschoben.
pause
Zuletzt bearbeitet: