Batch - Ältestes Logfile Wegsichern
Guten Tag allerseits!
Ich habe folgende Problemstellung:
NTBackup legt immer die Logfiles der letzten 10 Tage ab und löscht alle älteren. Nun möchte ich mir per Patch immer den ältesten wegkopieren, bevor er gelöscht wird.
Mein Problem ist, dass ich nur sehr beschränktes Wissen ob des Batch habe und nun mehr oder weniger oer radnom rumprobiere und zu keinem Ergebnis komme.
@echo off
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%a%%b%%c%%d
cd C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\WindowsNT\NTBackup\data
Echo D | xcopy test.txt LogFiles_alt\Sicherung%CDATE%.txt
for %%f in ("C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\WindowsNT\NTBackup\data*.txt") do echo %%~tf
Ich kann mir eine hardgecodete test.txt jeden tag wegsichern und die for-Schleife darunter teilt mir die Änderungsdaten der Dateien mit.
Ich komme jedoch nicht dahinter, wie ich dem Batch nun sagen soll er solle die älteste .txt File wegsichern.
Es wäre mir eine Freude wenn mir jmd helfen könnte,
Vielen Dank im Vorraus,
mit freundlichen Grüßen
Northon
Ich habe folgende Problemstellung:
NTBackup legt immer die Logfiles der letzten 10 Tage ab und löscht alle älteren. Nun möchte ich mir per Patch immer den ältesten wegkopieren, bevor er gelöscht wird.
Mein Problem ist, dass ich nur sehr beschränktes Wissen ob des Batch habe und nun mehr oder weniger oer radnom rumprobiere und zu keinem Ergebnis komme.
@echo off
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%a%%b%%c%%d
cd C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\WindowsNT\NTBackup\data
Echo D | xcopy test.txt LogFiles_alt\Sicherung%CDATE%.txt
for %%f in ("C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\WindowsNT\NTBackup\data*.txt") do echo %%~tf
Ich kann mir eine hardgecodete test.txt jeden tag wegsichern und die for-Schleife darunter teilt mir die Änderungsdaten der Dateien mit.
Ich komme jedoch nicht dahinter, wie ich dem Batch nun sagen soll er solle die älteste .txt File wegsichern.
Es wäre mir eine Freude wenn mir jmd helfen könnte,
Vielen Dank im Vorraus,
mit freundlichen Grüßen
Northon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93649
Url: https://administrator.de/contentid/93649
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo Northon!
Ungetestet etwa so:
Grüße
bastla
[Edit] Pfad angepasst [/Edit]
Ungetestet etwa so:
@echo off & setlocal
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%a%%b%%c%%d
cd /d "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\WindowsNT\NTBackup\data"
for /f "delims=" %%i in ('dir *.txt /b /a-d /o-d') do set "Oldest=%%i"
copy "%Oldest%" LogFiles_alt\Sicherung%CDATE%.txt
bastla
[Edit] Pfad angepasst [/Edit]
Hallo Northon!
Ersetze bitte (zum Testen) "echo off" durch "echo on" und starte von der Kommandozeile oder füge als letzte Zeile noch "pause" hinzu - dann kannst Du Dir den Ablauf genau ansehen.
Grüße
bastla
P.S.: Das Datum würde ich eher mit "%%c%%b%%a" festlegen (zumindest unter XP/2003/Vista).
P.P.S.: Ein Batch ist leichter lesbar, wenn er beim Posten unter < code>/< /code>-Tags (ohne Leerzeichen ) gesetzt wird.
bekomme ich dann einen Syntax-Error zurück.
Kann ich nicht nachvollziehen.Ersetze bitte (zum Testen) "echo off" durch "echo on" und starte von der Kommandozeile oder füge als letzte Zeile noch "pause" hinzu - dann kannst Du Dir den Ablauf genau ansehen.
Grüße
bastla
P.S.: Das Datum würde ich eher mit "%%c%%b%%a" festlegen (zumindest unter XP/2003/Vista).
P.P.S.: Ein Batch ist leichter lesbar, wenn er beim Posten unter < code>/< /code>-Tags (ohne Leerzeichen ) gesetzt wird.
Hallo Northon!
Das Problem ist das Leerzeichen hinter dem Datum (und vor ".txt") - lässt sich durch Setzen von Anführungszeichen vermeiden:
Grüße
bastla
häng dir nen Screenshot an.
Geht auch einfacher: Nach einem Klick auf das Systemmenüfeld (linke obere Ecke) des CMD-Fensters kannst Du in den Eigenschaften den"QuickEdit-Modus" (am besten gleich für alle Fenster) einschalten und danach mit der Maus Text markieren und per rechter Maustaste kopieren (bzw, wenn nichts markiert ist, einfügen).Das Problem ist das Leerzeichen hinter dem Datum (und vor ".txt") - lässt sich durch Setzen von Anführungszeichen vermeiden:
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set "CDATE=%%a%%b%%c%%d"
bastla
Hallo Northon!
Das Setzen der Anführungszeichen bezog sich nur auf die gepostete Zeile für das Erstellen der Datumsvariable %CDATE% (da diese ohne Anführungszeichen am Ende ein Leerzeichen enthält) - daher die Anführungszeichen um das "dir" entfernen (oder zumindest nur um "*.txt" setzen).
Grüße
bastla
Das Setzen der Anführungszeichen bezog sich nur auf die gepostete Zeile für das Erstellen der Datumsvariable %CDATE% (da diese ohne Anführungszeichen am Ende ein Leerzeichen enthält) - daher die Anführungszeichen um das "dir" entfernen (oder zumindest nur um "*.txt" setzen).
Grüße
bastla
Hallo Northon!
Nur als Ergänzung: Zugrundegelegt wird nicht das Erstellungsdatum, sondern das Datum der letzten Änderung, und eine Kontrolle mit
sollte zeigen, dass die Datei mit dem frühesten Änderungsdatum als letzte aufgelistet (und daher im Batch verwendet) wird. Verantwortlich für diese Reihenfolge ist das "-" in "/o-d" - mehr dazu mit "dir /?".
Grüße
bastla
die datei erster.txt wurde zuerst und die datei zweiter.txt als zweite erstellt mit einem Abstand>1min.
... dann wäre "erster.txt" die älteste Datei und sollte kopiert werden, was ...C:\Dokumente und Einstellungen\akerber\Desktop>copy "erster.txt" LogFiles_alt\Si
cherung05082008.txt
1 Datei(en) kopiert.
... auch zu klappen scheint ...cherung05082008.txt
1 Datei(en) kopiert.
Nur als Ergänzung: Zugrundegelegt wird nicht das Erstellungsdatum, sondern das Datum der letzten Änderung, und eine Kontrolle mit
dir /o-d "C:\Dokumente und Einstellungen\akerber\Desktop\*.txt"
Grüße
bastla