AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Batchscript zum automatischen Löschen von Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Batchscript zum automatischen Löschen von Dateien

Ein Thema von Luckie · begonnen am 21. Mai 2019 · letzter Beitrag vom 23. Mai 2019
Antwort Antwort
Seite 1 von 2  1 2      
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#1

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:13
Das Problem scheint aber nicht das Pattern zu sein, sondern die doppelte Aufführung der Verzeichnisse im Dir-Ergebnis.

Es werden alle Verzeichnisse zwei mal ausgegeben und davon wird dann das Erste übersprungen.

3 Verzeichnisse * 2 = 6 minus dem 1. = 5 Verzeichnisse in der Ausgabe.

Wie sieht das Ergebnis von
Code:
for /F "skip=%RETAINBACKUPS% delims=" %F IN ('dir /B /AD-r-s-h /O-D "%BACKUPDIR%\2???-??-?? ??-??"') DO echo rmdir /S /Q "%BACKUPDIR%\%F"
auf der Kommandozeile aus?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#2

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:16
Das Problem scheint aber nicht das Pattern zu sein, sondern die doppelte Aufführung der Verzeichnisse im Dir-Ergebnis.
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#3

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:52
Das Problem scheint aber nicht das Pattern zu sein, sondern die doppelte Aufführung der Verzeichnisse im Dir-Ergebnis.
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
Das zweite Verzeichnis im Dir hast Du mit Post Nr. #4 eingeführt. Seit dem schleppt sich das irgendwie mit durch, obwohl es syntaktisch eher grenzwertig ist.

Noch ein Versuch ohne die überflüssige Klammerung für die Kommandozeile:
Code:
for /F "skip=1 delims=" %F IN ('dir /B /AD-r-s-h /O-D "%BACKUPDIR%\*-*-* *-*" 2^>NUL') DO echo rmdir /S /Q "%BACKUPDIR%\%F"
Der Dir-Befehl verlangt keine zwei Parameter, das %BACKUPDIR% hinter dem Pattern für die Verzeichnisnamen ist kontraproduktiv.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#4

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 22:00
Das zweite Verzeichnis im Dir hast Du mit Post Nr. #4 eingeführt.
Wo ist da ein zweites Verzeichnis? Kommando dir, danach ein paar Switches dafür und danach das BACKUPDIR. Dann Fehlerumleitung samt notwendigem Escaping.

Zitat:
ohne die überflüssige Klammerung für die Kommandozeile
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.

Zitat:
Der Dir-Befehl verlangt keine zwei Parameter, das %BACKUPDIR% hinter dem Pattern für die Verzeichnisnamen ist kontraproduktiv.
Sag ich ja. Aber ich hab an keiner Stelle mehrere Verzeichnisse angegeben gehabt.


Keine Ausgabe mit
Du musst dir die Attribute der Verzeichnisse genau anschauen und die dir-Schalter entsprechend anpassen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#5

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 22:10
Das zweite Verzeichnis im Dir hast Du mit Post Nr. #4 eingeführt.
Wo ist da ein zweites Verzeichnis? Kommando dir, danach ein paar Switches dafür und danach das BACKUPDIR. Dann Fehlerumleitung samt notwendigem Escaping.
Oohh, Mist, Du hast recht, sollte wohl mal meine Brille putzen und nicht immer nur das lesen, von dem ich meine das es irgendwo steht, sondern nur das, was da wirklich steht.

Zitat:
ohne die überflüssige Klammerung für die Kommandozeile
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.
Prinzipiell hast Du ja recht, aber auf der Kommandozeile ist das halt schwer testbar. Wenn was in 'ner Batchdatei nicht so funktioniert, probier' ich das alles einzeln auf der Kommandozeile. In der Batchdatei kann man es dann in der Klammerung zusammenfassen.

Zitat:
Der Dir-Befehl verlangt keine zwei Parameter, das %BACKUPDIR% hinter dem Pattern für die Verzeichnisnamen ist kontraproduktiv.
Sag ich ja. Aber ich hab an keiner Stelle mehrere Verzeichnisse angegeben gehabt.
Sorry, da hab' ich irgendwie vollkommen falsch geguckt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:18
Erst muss ich mein Windows wieder zu Laufen bringen. Nach einem Windows Update ist er bei der Konfiguration des Updates hängen geblieben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:23
Mit
Code:
for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-r-s-h /O-D *-*-* *-* "%BACKUPDIR%" 2^>NUL') DO (
    echo rmdir /S /Q "%BACKUPDIR%\%%F"
)
bekomme ich:
Code:
Alte Sicherung(en) loeschen? [J,N]?J
Loesche alte Sicherungen...

rmdir /S /Q "D:\\2019-05-18 13-41"
rmdir /S /Q "D:\\2019-05-18 13-41"
rmdir /S /Q "D:\\2019-05-10 13-41"
rmdir /S /Q "D:\\2019-05-10 13-41"
rmdir /S /Q "D:\\2019-05-10 13-41"
rmdir /S /Q "D:\\2019-05-21 13-41"
rmdir /S /Q "D:\\2019-05-21 13-41"
rmdir /S /Q "D:\\2019-05-21 13-41"
Drücken Sie eine beliebige Taste . . .
bei: set RETAINBACKUPS=1

Mit 2???-??-?? ??-?? findet er gar nichts.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (21. Mai 2019 um 21:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#8

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:48
Deswegen schrieb ich ja das Pattern hinter das %BACKUPDIR%. Siehe Beitrag #12.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:49
Autsch. Ganz übersehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 21. Mai 2019, 21:56
Keine Ausgabe mit:
Code:
@echo off
set RETAINBACKUPS=1
set BACKUPDIR=D:\

if not exist "%BACKUPDIR%" (
    echo.
    echo "%BACKUPDIR%" existiert nicht.
    echo.
    pause
    goto :EOF
)

rem freien Speicherplatz anzeigen
for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i
echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB
echo.

rem alte Backups loeschen
choice /M "Alte Sicherung(en) loeschen?" /C JN
if %ERRORLEVEL% == 1 goto DEL_OLDEST
if %ERRORLEVEL% == 2 goto DO_BACKUP

:DEL_OlDEST
echo Loesche alte Sicherungen...
echo.

for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-S /O-N "%BACKUPDIR%\*-*-* *-*" 2^>NUL') DO (
    echo rmdir /S /Q "%BACKUPDIR%\%%F"
)

pause
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz