
146321
16.10.2020, aktualisiert am 17.10.2020
Aktuelles Datum und Uhrzeit per Batch in Ordnernamen mit robocopy aktualisieren
Hallo, moin, guten Tag, guten Abend, guten Mittag und natürlich auch guten Nachmittag! (Hoffe, jeder ist jetzt glücklich :D)
Ich habe ein herausforderndes Problem.
Der Skript funktioniert super, aber der Ordner, der beim Start des Scripts mit dem aktuellen Datum erstellt wird, wird während der Skript läuft nicht nochmal mit dem neuen aktuellen Datum erstellt, sondern bleibt beim alten Datum vom ersten Ordner, bedeutet der alte Ordner wird überschrieben oder nichts passiert dank (/XC /XN /XO).
Das liegt daran, dass der Skript in eine unendliche Schleife geht wegen /mon:1 /mot:1, was gut ist, aber das Datum wird NICHT aktualisiert.
Wie kann ich das so machen, dass der Ordner nicht überschrieben wird, sondern immer ein neuer Ordner mit dem aktuellen Datum erstellt wird?
Ich habe Vieles probiert, nichts hat geholfen. Ich bevorzuge "robocopy" und hoffe, dass jemand ne Idee hat fürs Problem.
Bitte um Hilfe, danke sehr!
Code:
Ich habe ein herausforderndes Problem.
Der Skript funktioniert super, aber der Ordner, der beim Start des Scripts mit dem aktuellen Datum erstellt wird, wird während der Skript läuft nicht nochmal mit dem neuen aktuellen Datum erstellt, sondern bleibt beim alten Datum vom ersten Ordner, bedeutet der alte Ordner wird überschrieben oder nichts passiert dank (/XC /XN /XO).
Das liegt daran, dass der Skript in eine unendliche Schleife geht wegen /mon:1 /mot:1, was gut ist, aber das Datum wird NICHT aktualisiert.
Wie kann ich das so machen, dass der Ordner nicht überschrieben wird, sondern immer ein neuer Ordner mit dem aktuellen Datum erstellt wird?
Ich habe Vieles probiert, nichts hat geholfen. Ich bevorzuge "robocopy" und hoffe, dass jemand ne Idee hat fürs Problem.
Bitte um Hilfe, danke sehr!
Code:
@echo off
color 2
Set Source=C:\source
Set Destination=C:\destination
Set Folder=FolderName
Set currentdate=%date:/=-%_%time::=-%
robocopy "%Source%" "%Destination%\%currentdate% %Folder%" /E /XC /XN /XO /mon:1 /mot:1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 613505
Url: https://administrator.de/forum/aktuelles-datum-und-uhrzeit-per-batch-in-ordnernamen-mit-robocopy-aktualisieren-613505.html
Ausgedruckt am: 04.04.2025 um 13:04 Uhr
10 Kommentare
Neuester Kommentar
Kein Hallo,
Dein Skript läuft aktuell so ab, dass das Skript gestartet wird und einmalig bis zum Neustart des Skriptes die Variable vom Datum gesetzt wird. Es sollte logisch sein, dass wenn ein neuer Tag beginnt das Skript Neugestartet wird, oder eine Schleife implementiert wird welche überprüft, ob das gesetze Datum noch mit dem aktuellem Datum des Systems übereinstimmt.
Die saubere Lösung wäre aber z.B. mit der Aufgabenplanung das Skript jeden Tag um 0:00 Uhr neustarten zulassen.
Dein Skript läuft aktuell so ab, dass das Skript gestartet wird und einmalig bis zum Neustart des Skriptes die Variable vom Datum gesetzt wird. Es sollte logisch sein, dass wenn ein neuer Tag beginnt das Skript Neugestartet wird, oder eine Schleife implementiert wird welche überprüft, ob das gesetze Datum noch mit dem aktuellem Datum des Systems übereinstimmt.
Die saubere Lösung wäre aber z.B. mit der Aufgabenplanung das Skript jeden Tag um 0:00 Uhr neustarten zulassen.
Beide Varianten würden einen Neustart des Skriptes ausführen.
Einmal über die Aufgabenplanung, oder alternativ, wenn das Datum nicht mehr übereinstimmt über eine Schleife. Mir ist nicht bekannt - ich habe jedoch auch keine großen Batch-Kenntnisse - dass eine Variable nachträglich verändert werden kann.
Die Variante mit der Aufgabenplanung ist übrigens die Elegantere, welche nach 24 Stunden das Skript neustartet, als die mit der Schleife im Quellcode.
Einmal über die Aufgabenplanung, oder alternativ, wenn das Datum nicht mehr übereinstimmt über eine Schleife. Mir ist nicht bekannt - ich habe jedoch auch keine großen Batch-Kenntnisse - dass eine Variable nachträglich verändert werden kann.
Die Variante mit der Aufgabenplanung ist übrigens die Elegantere, welche nach 24 Stunden das Skript neustartet, als die mit der Schleife im Quellcode.
Nein mit Überwachung meine ich die Änderungsevents die dazu führen das robocopy erneut kopiert.
Das Script steht in der robocopy Zeile, da robocopy die Überwachung selbst intern ausführt. Eine Schleife um die robocopy Zeile herum zu bauen hat keinen Effekt, da sie nie iteriert.
Schau dir mal in PowerShell so etwas wie System.IO.FileSystemWatcher an. Damit kannst du die Überwachung selbst ausführen und /mon und /mot aus der robocopy Kommandozeile werfen.
Steffen
/MON:n :: Überwacht die Quelle. Wird erneut ausgeführt, wenn mehr
als n Änderungen gefunden werden.
/MOT:m :: Überwacht die Quelle. Wird bei einer Änderung erneut
ausgeführt in m Minuten.
Schau dir mal in PowerShell so etwas wie System.IO.FileSystemWatcher an. Damit kannst du die Überwachung selbst ausführen und /mon und /mot aus der robocopy Kommandozeile werfen.
Steffen