-
Forum: Betriebssysteme
by Dalai,
23. Mai 2019
Diese Möglichkeiten hast du:cd /D D:\
D:
pushd D:\wobei bei letzterem am Ende noch ein popd zu ergänzen wäre (wenn auch nicht zwingend nötig). Es gibt subtile Unterschiede zwischen den Kommandos. Ersteres ändert spezifisch auf das Root von Laufwerk D:, zweiteres wechselt nur auf Laufwerk D: und zwar in das zuletzt dort benutzte Verzeichnis. Und das pushd packt das Verzeichnis auf den...
-
Forum: Betriebssysteme
by Dalai,
23. Mai 2019
Bei diesem Code musst du aber sicherstellen, dass das Arbeitsverzeichnis immer gleich dem Backupverzeichnis ist, denn das dir-Kommando listet die Inhalte vom Arbeitsverzeichnis, gelöscht wird aber in einem konkreten Pfad (dem Backupverzeichnis).
Wollt's nur nochmal gesagt haben, auch für andere Mitleser.
PS: Bei dem md unten im Skript fehlt das schließende Quote.
Grüße
Dalai
-
Forum: Betriebssysteme
by Dalai,
22. Mai 2019
Auf eine Sache möchte ich in Bezug auf das fehlende bzw. breit gefasste Pattern noch hinweisen: Damit werden alle Verzeichnisse ausgegeben, nicht nur die automatisch erstellten Backupverzeichnisse. Achte also darauf, dass dort keine anderen Dinge rumliegen, sonst wunderst du dich, wenn auf einmal Verzeichnisse bzw. ganze Strukturen verschwinden. Auch deshalb ist es besser, sowohl ein Pattern...
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Ja, man kann auch ein cd /D "%BACKUPDIR%"vorneweg machen, aber trotzdem funktioniert es nach meinen Tests auch, das Pattern direkt an das dir-Kommando zu geben.
Vielleicht war das Wegfiltern der Fehler für die Tests doch nicht so gut? Andererseits lässt sich ja das dir-Kommando auch so auf die CMD kopieren und einzeln testen (dann sinnvollerweise ohne Umleitung von StdError) ...
Grüße
Dalai
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Wo ist da ein zweites Verzeichnis? Kommando dir, danach ein paar Switches dafür und danach das BACKUPDIR. Dann Fehlerumleitung samt notwendigem Escaping.
Bei einem einzelnen Befehl wie hier mag sie überflüssig sein, aber sobald man weitere Befehle hinzufügen will, und sei es nur für die Ausgabe, ist die Klammerung notwendig. Zudem finde ich es mit Klammerung viel einfacher zu lesen.
Sag ich...
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Deswegen schrieb ich ja das Pattern hinter das %BACKUPDIR%. Siehe Beitrag #12.
Grüße
Dalai
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Was aber nur mit deinem Befehl passiert, weil du dem dir-Kommando zwei Verzeichnisse übergibst. Wenn es das erste nicht gibt, kommt stattdessen "Datei nicht gefunden" als Fehlermeldung (die dann vom 2>NUL geschluckt wird).
Grüße
Dalai
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Weiß nicht, ob mein Beitrag von 20:31 übersehen wurde. Mit dem dort gegebenen Pattern sollte es klappen.
Grüße
Dalai
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Backup im Root eines Laufwerks hatte ich auch noch nicht. Das sollte recht einfach zu beheben sein, wenn du die Syntax deiner Verzeichnisse mit einbeziehst:... IN ('dir /B /AD /O-D "%BACKUPDIR%\*-*-* *-*" 2^>NUL') ...
Übrigens lässt sich "System Volume Information" nur mit SYSTEM-Rechten betreten und daher auch mit Adminrechte nicht löschen. Nichtsdestotrotz ist es natürlich besser, wenn das...
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
:oops: Im Code oben fehlte das wichtige IN vor der ersten öffnenden Klammer.
Nun korrigiert und auf Verzeichnisse angepasst:
@echo off
set RETAINBACKUPS=3
set BACKUPDIR=D:\rive\some\path
if NOT exist "%BACKUPDIR%" (
echo.
-
Forum: Betriebssysteme
by Dalai,
21. Mai 2019
Für den Fall, dass es nicht um das älteste Backup geht sondern eine bestimmte Anzahl von Backupstufen existieren sollen, geht das ebenfalls recht einfach mit Batch:set RETAINBACKUPS=15
set BACKUPDIR=D:\rive\some\path
...
for /F "skip=%RETAINBACKUPS% delims=" %%F ('dir /B /A-D /O-D "%BACKUPDIR%" 2^>NUL') DO (
del /F "%BACKUPDIR%\%%F"
)
Der Code bezieht sich zwar auf Dateien statt...