Gestatten Sie mir, einen bescheidenen Beitrag zu diesem bereits wertvollen Thema zu leisten. Ich finde, dass andere Lösungen den eigentlichen Fehlertext loswerden könnten, aber ignorieren die %ERRORLEVEL%, die einen Fehler in meiner Anwendung signalisiert. Und ich will %ERRORLEVEL%, solange es sich nicht um den Fehler "Keine Dateien gefunden" handelt.
Einige Beispiele:
Fehlersuche und -beseitigung im Einzelnen:
forfiles /p "[file path...]\IDOC_ARCHIVE" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&ECHO found error||echo found success
Verwendung eines Einzeilers zur Rückgabe von ERRORLEVEL Erfolg oder Misserfolg:
forfiles /p "[file path...]\IDOC_ARCHIVE" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&EXIT /B 1||EXIT /B 0
Verwendung eines Oneliners, um den ERRORLEVEL im Kontext einer Batchdatei inmitten von anderem Code auf Null zu halten (ver > nul setzt den ERRORLEVEL zurück):
forfiles /p "[file path...]\IDOC_ARCHIVE" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&ECHO found error||ver > nul
Bei einem SQL Server Agent CmdExec-Auftragsschritt bin ich auf folgendes gestoßen. Ich weiß nicht, ob es ein Fehler ist, aber der CmdExec innerhalb des Schritts erkennt nur die erste Codezeile:
cmd /e:on /c "forfiles /p "C:\SQLADMIN\MAINTREPORTS\SQL2" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&EXIT 1||EXIT 0"&exit %errorlevel%
8 Stimmen
Jeff Atwood hat diese Frage auf Serverfault beantwortet, und ich denke, sie sollte hier dokumentiert werden. serverfault.com/questions/49614/delete-files-older-than-x-days
0 Stimmen
Eine neue Methode, die auf einer .BAT-Datei basiert und nur interne CMD.EXE-Befehle verwendet, wurde hier veröffentlicht: stackoverflow.com/questions/9746778/
1 Stimmen
gehrcke.de/zeitluecken wurde zu diesem Zweck entwickelt. Es ermöglicht sogar ein ausgeklügeltes Löschschema: Zusätzlich zur Aufbewahrung der Dateien der letzten 7 Tage kann z. B. auch jeweils eine Datei für die letzten 8 Wochen, 12 Monate und 2 Jahre aufbewahrt werden.