Möchte bei folgender Batch nicht die letzten x Ordner sondern x DATEIEN löschen

CED999

Lieutenant
Registriert
Juni 2011
Beiträge
963
Code:
Setlocal EnableDelayedExpansion
    set "_count=0"
    set "foldersToKeep=4" rem die Anzahl der x neusten Ordner die behalten werden soll
     
    rem count the files
    for /f "tokens=*" %%a in ('dir %Pf_ZielBereinigungBackups2%% /a:d /b /o:d') do @(set /a _count+=1 >nul)
     
    echo !_count! directories found
     
    rem keep x folders, delete the rest
    rem with x as the variable "foldersToKeep"
    for /f "skip=%foldersToKeep%" %%b in ('dir %Pf_ZielBereinigungBackups2% /a:d /b /o:-d') do (
        echo directory !_count! is %Pf_ZielBereinigungBackups2%\%%b
        set /a _count-=1
        rd /s /q %Pf_ZielBereinigungBackups2%\%%b

leider habe ich keinen wirklichen Plan von dem Code, wäre also nicht schlecht wenn jemand noch kurz den Hintergrund der Änderung erklären könnte!

Grüße!
 
Das Script sollte sich mit Hilde der Dokumentation zu dir, rd und del entsprechend modifizieren lassen.
Bei dir muss der Parameter /a:d (nur Verzeichnisse) durch /a:-d (keine Verzeichnisse) ersetzt werden. Da rd Ordner löscht, muss dieser Befehl durch del ersetzt werden, welches Dateien löscht. In den Zeilen mit echo sollte noch directories durch files ersetzt werden, damit die Statusmeldungen zu der durchgeführten Aktion passen.
 
Zurück
Oben