Pfad durchsuchen und bestimmten Ordner kopieren
Hallo,
ich bin auf der Suche nach einem Batch, der die folgende Aufgabe erledigt.
Ich habe zwei feste Pfade:
1. d:\programme\sicherungen\
2. H:\
Das Skript soll in dem 1. Pfad den zuletzt erstellten Ordner auf das Laufwerk H:\ kopieren.
Es wäre schön, wenn auf dem Laufwerk H:\ vorher automatisch ein Ordner nach dem schema "backup_aktuellesdatum" erzeugt werden würde.
Ich habe schon ein wenig im Forum gesucht, aber nichts 100% Passendes gefunden.
Wäre schön wenn jemand helfen kann.
Danke im Voraus.
Alforno
ich bin auf der Suche nach einem Batch, der die folgende Aufgabe erledigt.
Ich habe zwei feste Pfade:
1. d:\programme\sicherungen\
2. H:\
Das Skript soll in dem 1. Pfad den zuletzt erstellten Ordner auf das Laufwerk H:\ kopieren.
Es wäre schön, wenn auf dem Laufwerk H:\ vorher automatisch ein Ordner nach dem schema "backup_aktuellesdatum" erzeugt werden würde.
Ich habe schon ein wenig im Forum gesucht, aber nichts 100% Passendes gefunden.
Wäre schön wenn jemand helfen kann.
Danke im Voraus.
Alforno
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129437
Url: https://administrator.de/contentid/129437
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
14 Kommentare
Neuester Kommentar
Sollte in der Theorie so funktionieren:
Benötigt wird dazu das "tail" Kommando aus dem Win Ressource Kit.
Das Script kann/sollte noch erweitert werden (Fehlerabfragen, abschließendes Löschen der Temp-Dateien).
Gruß, Farbauti.
set SRCDIR=d:\programme\sicherungen\
set DESTDIR=H:\
set TMPFILE=%TEMP%\temptemp.tmp
REM zeige Dir, sortiert nach Datum
dir /od /b %SRCDIR%>%TMPFILE%
REM liest letzte Zeile (=neuester Dir-Eintrag)
tail -1 %TMPFILE% > %TMPFILE%2
REM setzt Dir
set /p LATESTDIR=<%TMPFILE%2
REM setzt datum in ziel dir
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2%
REM kopiert was auch immer...
copy %SRCDIR%\%LATESTDIR% %DESTDIR%\%NOWDIR%
Benötigt wird dazu das "tail" Kommando aus dem Win Ressource Kit.
Das Script kann/sollte noch erweitert werden (Fehlerabfragen, abschließendes Löschen der Temp-Dateien).
Gruß, Farbauti.
Moin Alforno,
ohne temporäre Zwischenspeicherung müsste es so oder ähnlich aussehen:
--> würde das "zuletzt angelegte Verzeichnis" der ersten Ebene unterhalb von d:\temp in die Variable %newest% schreiben
---> der Zusatz "delims=" ist für den Dfall, dass dieses Verzeichnis "Leerzeichen im Namen" hat.
Diese Mimik findest du auch über Forumssuche nach (sinngemäß) "Älteste Verzeichnisse löschen".
Grüße
Biber
ohne temporäre Zwischenspeicherung müsste es so oder ähnlich aussehen:
....
for /f "delims=" %%i in ('dir /od /ad /b d:\temp') do set "newest=%%i"
...:: ab hier dann mit der Variable %newest% arbeiten
--> würde das "zuletzt angelegte Verzeichnis" der ersten Ebene unterhalb von d:\temp in die Variable %newest% schreiben
---> der Zusatz "delims=" ist für den Dfall, dass dieses Verzeichnis "Leerzeichen im Namen" hat.
Diese Mimik findest du auch über Forumssuche nach (sinngemäß) "Älteste Verzeichnisse löschen".
Grüße
Biber
Moin Alfonso,
in Farbautis Skizze eingefügt würde es so aussehen:
in vollem Vertrauen in Farbauti, von daher ungetestet
Grüße
Biber
in Farbautis Skizze eingefügt würde es so aussehen:
set "SRCDIR=d:\programme\sicherungen"
set "DESTDIR=H:"
:: --- hier ist jetzt ein bisschen Luft aus dem Käse gedrückt
:: --- eine Zeile bleibt:
FOR /F "delims=" %%i in ('dir /od /ad /b %SRCDIR%') do set "LATEXDIR=%%i"
REM setzt datum in ziel dir
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2%
REM kopiert was auch immer...
copy %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%
in vollem Vertrauen in Farbauti, von daher ungetestet
Grüße
Biber
Hallo Alforno,
wo nix ist, wird auch nix kopiert. Es müßte schon klar sein, dass sich in deinem Ordner "Test" Daten zum kopieren befinden müssen.
Um einen neuen Ordner anzulegen nimmst du zum Beispiel:
und im Anschluss die schon vorangegangenen Codes in deine Batchdatei einfügen.
Gruss
Tsuki
wo nix ist, wird auch nix kopiert. Es müßte schon klar sein, dass sich in deinem Ordner "Test" Daten zum kopieren befinden müssen.
Um einen neuen Ordner anzulegen nimmst du zum Beispiel:
MD H:\backup_%date%
Gruss
Tsuki
@Alforno,
bibers schnipsel funktioniert. Es ist das Prinzip! Die Ordnertiefe wurde auch schon mal in diesem Thread behandelt.
Füge die Infos mit etwaigen Änderungen von Bibers Script zusammen und es funktioniert.
Wenn ich für Testzwecke mal Bibers letztes Script nehme und schreibe es so um
dann wird der letzte Ordner in meinem Pfad nach dem Backup-Ordner mit Datum kopiert.
Gruss
Tsuki
bibers schnipsel funktioniert. Es ist das Prinzip! Die Ordnertiefe wurde auch schon mal in diesem Thread behandelt.
Füge die Infos mit etwaigen Änderungen von Bibers Script zusammen und es funktioniert.
Wenn ich für Testzwecke mal Bibers letztes Script nehme und schreibe es so um
set "SRCDIR=D:\1\Alle"
set "DESTDIR=D:"
:: --- hier ist jetzt ein bisschen Luft aus dem Käse gedrückt
:: --- eine Zeile bleibt:
FOR /F "delims=" %%i in ('dir /od /ad /b %SRCDIR%') do set "LATEXDIR=%%i"
REM setzt datum in ziel dir
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2%
md %DESTDIR%\%NOWDIR%
REM kopiert was auch immer...
move %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%
Gruss
Tsuki
Moin Alforno,
reicht es nicht, wenn du die Zeilen 11-14 ersetzt durch einen XCOPY-Befehl?
ggf noch mit Anführungszeichen, falls Leerzeichen im Pfad und XCopy-Parametern ["XCopy "%SRCDIR%\%LATEXDIR%" "%DESTDIR%\%NOWDIR%\%LATEXDIR%\"]
Grüße
Biber
reicht es nicht, wenn du die Zeilen 11-14 ersetzt durch einen XCOPY-Befehl?
...
XCopy %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%\%LATEXDIR%\
ggf noch mit Anführungszeichen, falls Leerzeichen im Pfad und XCopy-Parametern ["XCopy "%SRCDIR%\%LATEXDIR%" "%DESTDIR%\%NOWDIR%\%LATEXDIR%\"]
Grüße
Biber
Moin Alforno,
wenn wir da mit bloßem Auge keine (Denk-)Fehler erkennen können, dann
Schau nach, was ausgeführt werden würde, copy&paste diese Ausgabe und schick genau dieses Copy&Pastilat auf die Reise.
Ggf mit einem Schalter /L hintendran, damit auch dieser Xcopy-Befehl nur simuliert.
Irgendwas muss er ja erzählen...
Wenn das nix hilft, dann schwerere Geschütze. Oben in den Batch das "Echo off " raus und ein "echo on" rein.
Ergebnis hier posten.
Grüße
Biber
wenn wir da mit bloßem Auge keine (Denk-)Fehler erkennen können, dann
- starte doch diesen Winz-Schnipsel vom CMD-Prompt aus
- und stelle minimal der XCOPY-Zeile ein "Echo " voran
Schau nach, was ausgeführt werden würde, copy&paste diese Ausgabe und schick genau dieses Copy&Pastilat auf die Reise.
Ggf mit einem Schalter /L hintendran, damit auch dieser Xcopy-Befehl nur simuliert.
Irgendwas muss er ja erzählen...
Wenn das nix hilft, dann schwerere Geschütze. Oben in den Batch das "Echo off " raus und ein "echo on" rein.
Ergebnis hier posten.
Grüße
Biber