For Schleife in Batch
Hallo,
ich komme mit meinem Batch nicht weiter.
Ich will in einer Schleife die Dateien im Quell-Verzeichnis sortiert nach Datum - die älteste zuerst - in das Ziel-Verzeichnis kopieren und anschließend löschen.
Die 1. Variante hier läuft aber ich habe eben nur einen Befehl @set oldest=%%F
da ich mehrere Befehle ausführen muss, verwende ich in der 2. Variante Klammern:
In dieser Variante wird aber oldest nicht gesetzt!? Warum funktioniert die "Klammervariante" also mehrere Befehle nicht? Ich finde das Problem nicht?
ich komme mit meinem Batch nicht weiter.
Ich will in einer Schleife die Dateien im Quell-Verzeichnis sortiert nach Datum - die älteste zuerst - in das Ziel-Verzeichnis kopieren und anschließend löschen.
Die 1. Variante hier läuft aber ich habe eben nur einen Befehl @set oldest=%%F
SET Quelle=C:\temp\COPY_Quelle
SET Ziel=C:\temp\COPY_Ziel
For /F "tokens=*" %%F in ('dir /O-D /A-D /B "%Quelle%"') Do @SET oldest=%%F
ECHO wirklich kopieren "%Quelle%\%oldest%" -to- "%Ziel%" ?
ECHO Strg+C zum Abbrechen. Beliebige Taste zum kopieren.
COPY "%Quelle%\%oldest%" "%Ziel%"
Del "%Quelle%\%oldest%"
da ich mehrere Befehle ausführen muss, verwende ich in der 2. Variante Klammern:
setlocal EnableDelayedExpansion
SET Quelle=C:\temp\XCOPY_Quelle
SET Ziel=C:\temp\XCOPY_Ziel
For /F "tokens=*" %%F in ('dir /O-D /A-D /B "%SourceFld%"') Do (
SET "oldest=%%F"
ECHO "!oldest!"
COPY "!Quelle!\!oldest!" "!Ziel!"
Del "!Quelle!\!oldest!"
)
In dieser Variante wird aber oldest nicht gesetzt!? Warum funktioniert die "Klammervariante" also mehrere Befehle nicht? Ich finde das Problem nicht?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1863232459
Url: https://administrator.de/forum/for-schleife-in-batch-1863232459.html
Ausgedruckt am: 18.06.2025 um 12:06 Uhr
2 Kommentare
Neuester Kommentar
Servus,
Grüße Uwe
Ich will in einer Schleife die Dateien im Quell-Verzeichnis sortiert nach Datum - die älteste zuerst - in das Ziel-Verzeichnis kopieren und anschließend löschen.
Für sowas einfaches brauchst du weder DelayedExpansion noch Definition überflüssiger Variablen in der Schleife.@echo off
set "quelle=C:\temp\COPY_Quelle"
set "ziel=C:\temp\COPY_Ziel"
for /f "delims=" %%a in ('dir /b /od /a-d "%quelle%"') do (copy "%quelle%\%%a" "%ziel%\" && del "%quelle%\%%a")