realalloy

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
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?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 1863232459

Url: https://administrator.de/forum/for-schleife-in-batch-1863232459.html

Ausgedruckt am: 18.06.2025 um 12:06 Uhr

realalloy
realalloy 08.02.2022 um 13:55:22 Uhr
Goto Top
Berichtigung: In der Schleife nicht "%SourceFld%" sondern "%Quelle%"

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 "%Quelle%"') Do (  
  SET "oldest=%%F"  
  ECHO "!oldest!"  
  COPY "!Quelle!\!oldest!" "!Ziel!"  
  Del  "!Quelle!\!oldest!"  
)
colinardo
colinardo 10.02.2022 aktualisiert um 09:53:03 Uhr
Goto Top
Servus,
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")  
Grüße Uwe