For Schleife Windows - Reihenfolge umdrehen
for Schleife Windows - Reihenfolge umdrehen ...
Ich suche in einem übergeordneten Verzeichnis Unterverzeichnisse,
dabei sollen die 'n' neuesten übersprungen werden.
Der Rest muss aber in umgekehrter Reihenfolge abgearbeitet werden,
also zuerst das älteste Verzeichnis, dann das zweitälteste etc.
Ich finde keine Lösung dafür.
Ich suche in einem übergeordneten Verzeichnis Unterverzeichnisse,
dabei sollen die 'n' neuesten übersprungen werden.
Der Rest muss aber in umgekehrter Reihenfolge abgearbeitet werden,
also zuerst das älteste Verzeichnis, dann das zweitälteste etc.
Ich finde keine Lösung dafür.
set CLean1SkipDir=2
set Clean1DirPath=D:\Backup
for /f "skip=%CLean1SkipDir% delims=" %%a in ('dir /B /AD /O-D "%Clean1DirPath%"') do call :Remove_C "%%a"
set CountUV=0
:Remove_C
set /a CountUV+=1
echo.
rem do something ...
:Next_C_Remove
set /a DelDirCnt=%DelDirCnt%+1
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8829175449
Url: https://administrator.de/contentid/8829175449
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Du machst die Abfrage direkt in der FOR Schleife, du bist also auf das festgelegt was der DIR Befehl liefert und kannst es nicht ändern.
Du musst zunächst die DIR Abfrage machen und die Ergebnisse in ein Array zu schreiben. Dann sortierst du das Array nach dem Datum und wirfst die ersten zwei Einträge raus. Danach sortierst du das Array nach umgekehrten Datum und beginnst mit der FOR Schleife mit der eigentlichen Verarbeitung.
Du musst zunächst die DIR Abfrage machen und die Ergebnisse in ein Array zu schreiben. Dann sortierst du das Array nach dem Datum und wirfst die ersten zwei Einträge raus. Danach sortierst du das Array nach umgekehrten Datum und beginnst mit der FOR Schleife mit der eigentlichen Verarbeitung.
Batch
Wieso man sich immer noch mit Batch den besten Freund verknotet? Aber is ja eh Freitag da darf man nicht allzuviel erwarten 🫠... Besser gleich die PowerShell nehmen wenn's schon Winblows sein muss ...
Pj
@echo off
set Clean1SkipDir=2
set "Clean1DirPath=D:\Backup"
for /f "tokens=1 delims=:" %%a in ('dir /B /AD "%Clean1DirPath%" ^|findstr /n "^" 2^>nul') do set /a cnt=%%a-%Clean1SkipDir%
for /f "tokens=1,* delims=:" %%a in ('dir /B /AD /OD "%Clean1DirPath%" ^|findstr /n "^" 2^>nul') do (
if %%a LEQ %cnt% (
echo Do something with "%%b"
)
)
Wieso man sich immer noch mit Batch den besten Freund verknotet? Aber is ja eh Freitag da darf man nicht allzuviel erwarten 🫠... Besser gleich die PowerShell nehmen wenn's schon Winblows sein muss ...
Get-ChildItem "d:\backup" -Directory | sort LastWriteTime | select -Skiplast 2 | foreach {
"Do something with $($_.Fullname)"
}
Ja, von hinten durch die Brust ins Auge:
https://stackoverflow.com/questions/10544646/dir-output-into-bat-array
https://stackoverflow.com/questions/10544646/dir-output-into-bat-array