shooan
Goto Top

Neueste Dateien Per Batch kopieren

Hallo,

bin gerade auf der Suche nach einer Möglichkeit mehrere Dateien vom typ *.bkf per Batch zu kopieren.
Dabei sollen immer die neuesten Sicherungen kopiert werden. Also aktuelles Datum - 1 Tag.

Das ganze wollte ich per xcopy machen, Wenn dies möglich ist. Oder Weiß jemand eine Bessere Möglichkeit.

Das ganze Szenario ist so die Daten liegen auf einem NAS und sollen nachehr mit Hilfe dieser Datei auf eine Externe Festplatte geschrieben werden.

Content-Key: 219973

Url: https://administrator.de/contentid/219973

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: colinardo
colinardo 21.10.2013 aktualisiert um 19:35:51 Uhr
Goto Top
Hallo shooan,
machs doch mit Robocopy:
back-to-topBeispiel (bkf-Dateien die max. 24h alt sind von F:\ nach G:\ kopieren):
robocopy "F:\" "G:\" *.bkf /copyall /maxage:1
oder via Powershell:
dir F:\*.bkf | ?{$_.LastWriteTime -gt (Get-date).AddDays(-1)} | Copy-Item -Destination "G:\"
Ansonsten gibt es hier zu diesem Thema etliche Beiträge die du mit der Suchfunktion findest...

Grüße Uwe
Mitglied: shooan
shooan 22.10.2013 um 08:49:55 Uhr
Goto Top
Danke colinardo für die schnelle Antwort. Der Power Shell befehlt geht. der Mit Robocopy irgendwie nicht.

Nun muss ich mal blöd fragen, wie bekommt man den Powershell Befehl in eine Ausführbare Datei die einfach per Doppelklick ausgeführt werden kann?
Mitglied: colinardo
colinardo 22.10.2013 aktualisiert um 09:26:10 Uhr
Goto Top
Zitat von @shooan:
Danke colinardo für die schnelle Antwort. Der Power Shell befehlt geht. der Mit Robocopy irgendwie nicht.
Der sollte aber gehen, hatte kurz nach meiner Veröffentlichung noch einen kleinen Fehler korrigiert, vielleicht hattest du die fehlerhafte Zeile kopiert und ausprobiert.
Nun muss ich mal blöd fragen, wie bekommt man den Powershell Befehl in eine Ausführbare Datei die einfach per
Doppelklick ausgeführt werden kann?
Den Befehl als *.ps1 speichern und dann Rechtsklick auf die Datei -> "Mit Powershell ausführen".
Man kann die Erweiterung für den Explorer auch so einstellen das PS-Scripte bei einem Doppelklick ausgeführt werden. Dazu kann man z.B. das Tool ExtMan benutzen.

8da9603495b8b173e6cf58f83a7c39b6

Grüße Uwe
Mitglied: shooan
shooan 23.10.2013 aktualisiert um 08:56:11 Uhr
Goto Top
Ja scheint wohl das ich da was falsches kopiert hatte.

Nun noch eine kleine Frage, wie müsste ich das Script denn umbauen wenn ich nur die Aktuellste Datei will mit Robocopy? Nicht Aktuelles Datum -1 Tag.
Mitglied: colinardo
colinardo 23.10.2013 um 08:58:10 Uhr
Goto Top
Zitat von @shooan:
Nun noch eine kleine Frage, wie müsste ich das Script denn umbauen wenn ich nur die Aktuellste Datei will mit Robocopy? Nicht
Aktuelles Datum -1 Tag.
dir "F:\*.bkf" | Sort-Object -Descending -Property LastWriteTime | select -First 1 | Copy-Item -Destination "G:\"
face-wink Uwe
Mitglied: shooan
shooan 23.10.2013 um 09:06:33 Uhr
Goto Top
Geht das auch mit Robocopy lieber Uwe? Irgendwie gefällt mir das Tool besser als die Powershell variante.
Mitglied: colinardo
colinardo 23.10.2013 aktualisiert um 10:31:54 Uhr
Goto Top
so direkt jetzt nicht, könntest du aber so lösen ...
@echo off & setlocal
set source=F:
set target=G:
for /f "tokens=* delims=" %%a IN ('dir /B /S /A-D /O-D "%source%\*.bkf"') DO @(  
  echo Kopiere "%%a" nach "%target%" ...  
  copy "%%a" "%target%" & goto :end  
)
:end
Mitglied: shooan
shooan 23.10.2013 um 09:53:40 Uhr
Goto Top
Hmm irgendwie ist da der wurm drinnen bei mir

wenn ich es so abändere wie ich es brauche dann geht da irgendwie nicht.

hier mal meine angeänderte Variante

@echo off & setlocal
set source=\\Ad-nt-03\s\BEData\
set target=D:\Test\
for /f "delims=" %%a IN ('dir /B /S /A-D /O-D "%source%\*.bkf"') DO @(copy "%%a" "%target%" & goto :end)
:end

Ist das Script für ne batch file oderfür die Powershell

Würde gerne sehen was er so schafft.
Mitglied: colinardo
colinardo 23.10.2013 um 09:57:37 Uhr
Goto Top
Das ist eine stink normale Batchdatei.
Du darfst deine Pfade nicht mit einem Backslash abschließen.
Die Batch listet alle *.bkf-Dateien in dem Verzeichnis auf und sortiert diese absteigend nach Datum so das der Pfad der neuesten Datei ganz oben steht, diese wird in dein Zielverzeichnis kopiert und das Script verlässt die Schleife.

Grüße Uwe
Mitglied: shooan
shooan 23.10.2013 um 10:01:59 Uhr
Goto Top
Zitat von @colinardo:
Das ist eine stink normale Batchdatei.
Du darfst deine Pfade nicht mit einem Backslash abschließen.
Die Batch listet alle *.bkf-Dateien in dem Verzeichnis auf und sortiert diese absteigend nach Datum so das der Pfad der neuesten
Datei ganz oben steht, diese wird in dein Zielverzeichnis kopiert und das Script verlässt die Schleife.

Grüße Uwe

Danke nun wieder etwas schlauer, dennoch geht nur ganz geschwind das Eingabefenster auf und geht sofort wieder zu. Er macht leider nix.
Mitglied: colinardo
colinardo 23.10.2013 um 10:04:19 Uhr
Goto Top
dann hast du noch einen Fehler ... öffne mal eine Konsole und führe das Script darin aus um zu sehen welchen Fehler er dir bringt.
Mitglied: shooan
shooan 23.10.2013 um 10:25:17 Uhr
Goto Top
Als Fehler kommt.

Das System kann den angegebenen Pfad nicht finden.

schon komisch weil das eine ist ein nas was definitiv darüber erreichbar ist und d:\test ist eine lokale Festplatte
Mitglied: shooan
shooan 23.10.2013 aktualisiert um 10:35:51 Uhr
Goto Top
Ahh habe den Fehler wohl gefunden. Es war noch nach den Pfad ne Lehrzeichen.

nun wäre es noch schön zu sehen was er macht. bzw welche Datei er gerade kopiert. Gerade sieht man nix aber die Daten werden kopiert.

Wie ich gerade sehe kopiert er nur die Aktuellste Datei, das ist zwar gut aber er müsste die anderen Dateien die heute auch geschrieben wurden auch mit kopieren.
Mitglied: colinardo
colinardo 23.10.2013 um 10:36:33 Uhr
Goto Top
habs oben im Coder ergänzt, einfach eine Echo-Zeile vor den Copy-Befehl
echo Kopiere "%%a" nach "%target%" ...
Eine Fortschrittsanzeige hat der normale Copy-Befehl nicht ...dazu müsstest du dann wieder robocopy verwenden
Mitglied: colinardo
colinardo 23.10.2013 um 10:37:15 Uhr
Goto Top
Zitat von @shooan:
Wie ich gerade sehe kopiert er nur die Aktuellste Datei, das ist zwar gut aber er müsste die anderen Dateien die heute auch
geschrieben wurden auch mit kopieren.
dann war deine erste Beschreibung zu ungenau
Mitglied: colinardo
colinardo 23.10.2013 aktualisiert um 10:51:46 Uhr
Goto Top
Zitat von @shooan:
Wie ich gerade sehe kopiert er nur die Aktuellste Datei, das ist zwar gut aber er müsste die anderen Dateien die heute auch
geschrieben wurden auch mit kopieren.
@echo off & setlocal
set today=%date:~6,4%%date:~3,2%%date:~0,2%
robocopy "\\Ad-nt-03\s\BEData" "D:\Test" *.bkf /maxage:%today%  
Das nächste mal bitte deine Wünsche genauer spezifizieren ...
Damit sollte der Beitrag erledigt sein ...

Viel Erfolg
Grüße Uwe
Mitglied: shooan
shooan 23.10.2013 um 10:49:23 Uhr
Goto Top
Das stimmt wohl.

Da habe ich mich echt falsch ausgedrückt.

Gut die Dateien Werden nun ALLE an Aktuellen datum geschrieben, dies ist nun so eingestellt. Die Batch Datei soll nun alle Dateien vom Aktuellen Datum wegkopieren auf ein anderes Verzeichnis.

Klar kann man das auch per Hand machen aber mit der Bach kann man schön einen task machen. das ist der Hintergrund.
Mitglied: colinardo
colinardo 23.10.2013 um 10:54:42 Uhr
Goto Top
siehe letzten post ...
Wenns das dann war, den Beitrag bitte noch als gelöst markieren. Danke.
Mitglied: shooan
shooan 23.10.2013 um 10:58:53 Uhr
Goto Top
Mache gerade einen Testlauf wenn der durch ist mache ich das gerne face-smile

Danke schon mal für die Hilfe face-smile