Bedingtes Kopieren mithilfe von Batch und Robocopy
Hallo liebe Community,
ich bin an euren Rat angewiesen. Ich habe für eine Sicherung ein Robocopy Script erstellt. Das funktioniert soweit. Nun wollte ich eine Optimierung vornehmen. Wenn ich per VPN die Sicherung durchführe, wird sehr viel „unnötiges“ überprüft, sodass die Sicherung sehr viel Zeit in Anspruch nimmt. Dabei bin ich auf die Idee gekommen, nur die aktuellen Ordner zu kopieren.
Meine Ordnerstruktur ist folgendermaßen aufgebaut:
<Laufwerksbuchstabe>\Daten\ <Jahr.Monat.Tag>
<Jahr.Monat.Tag>
Die Optimierung sollte dazu führen, dass das Jahr aus dem Ordnernamen mit dem heutigen Jahr verglichen wird. Wenn das der Fall ist, soll der Ordner kopiert werden. Um das zu realisieren muss ich die Pfade im Robocopy dynamisch an das derzeitige Ergebnis der For-Schleife gestalten. Das Problem ist, dass die Laufzeitvariable nur das Jahr des Ordnernamens beinhaltet und nicht den kompletten Ordnernamen. Hätte jemand einen Tipp wie ich das realisieren könnte? Für jeden Hinweis wäre ich dankbar.
Gruß Protecdok
ich bin an euren Rat angewiesen. Ich habe für eine Sicherung ein Robocopy Script erstellt. Das funktioniert soweit. Nun wollte ich eine Optimierung vornehmen. Wenn ich per VPN die Sicherung durchführe, wird sehr viel „unnötiges“ überprüft, sodass die Sicherung sehr viel Zeit in Anspruch nimmt. Dabei bin ich auf die Idee gekommen, nur die aktuellen Ordner zu kopieren.
@echo off
set year=%date:~6%
FOR /f "tokens=1 delims=." %%F IN ('dir /AD /B Y:\Daten') DO (
IF "%%F" == "%year%" (
robocopy.exe "Y:\Daten\ <ORDNERNAME>" "C:\Daten\ <ORDNERNAME>" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE
)
)
Meine Ordnerstruktur ist folgendermaßen aufgebaut:
<Laufwerksbuchstabe>\Daten\ <Jahr.Monat.Tag>
<Jahr.Monat.Tag>
Die Optimierung sollte dazu führen, dass das Jahr aus dem Ordnernamen mit dem heutigen Jahr verglichen wird. Wenn das der Fall ist, soll der Ordner kopiert werden. Um das zu realisieren muss ich die Pfade im Robocopy dynamisch an das derzeitige Ergebnis der For-Schleife gestalten. Das Problem ist, dass die Laufzeitvariable nur das Jahr des Ordnernamens beinhaltet und nicht den kompletten Ordnernamen. Hätte jemand einen Tipp wie ich das realisieren könnte? Für jeden Hinweis wäre ich dankbar.
Gruß Protecdok
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212724
Url: https://administrator.de/forum/bedingtes-kopieren-mithilfe-von-batch-und-robocopy-212724.html
Ausgedruckt am: 17.04.2025 um 18:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo Protecdok,
du könntest eine Forschleife davorspannen:
oder gleich alle Tokens deiner Forschleife einsammeln:
lg.
du könntest eine Forschleife davorspannen:
@ECHO OFF &SETLOCAL
set "year=%date:~6%"
FOR /d %%a IN (Y:\Daten\*) DO (
FOR /f "delims=." %%F IN ("%%~a") DO (
IF "%%F" == "%year%" (
robocopy.exe "Y:\Daten\%%~a" "C:\Daten\%%~a" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE
)
)
)
@ECHO OFF &SETLOCAL
set "year=%date:~6%"
FOR /f "tokens=1-3 delims=." %%F IN ('dir /AD /B Y:\Daten') DO (
IF "%%F" == "%year%" (
robocopy.exe "Y:\Daten\%%F.%%G.%%H" "C:\Daten\%%F.%%G.%%H" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE
)
)