Alle Windows-Kommandos

Liste der Windows-Kommandozeilentools - Kommandos und -Befehle unter MS Windows

Liste der Windows-eigenen Kommandos

forfiles

Übersicht

Befehl
Kurzbeschreibung
Syntax
Beispiele
     IIS Logdateien löschen


Befehlforfiles
KurzbeschreibungWählt eine Datei (oder einen Satz von Dateien) und führt einen Befehl auf dieser Datei aus. Dies ist für Batchaufträge hilfreich.
Syntax
Hinweis: Diese Datei finden Sie im System32-Ordner von Windows 7. 
Kommando zum Anzeigen der Hilfe: forfiles /? 


FORFILES [/P Pfadname] [/M Suchmaske] [/S]
         [/C Befehl] [/D [+ | -] {dd.MM.yyyy | TT}]

Beschreibung:
    Wählt eine Datei (oder einen Satz von Dateien) und führt einen 
    Befehl auf dieser Datei aus. Dies ist für Batchaufträge hilfreich.

Parameterliste:
    /P    Pfadname      Bestimmt den Pfad, auf dem die Suche gestartet
                        wird. Standardordner ist der zurzeit
                        verwendete Ordner (.).

    /M    Suchmaske     Sucht nach Dateien laut einer Suchmaske.
                        Die Standardsuchmaske ist "*".

    /S                  Durchsucht Unterverzeichnisse
                        rekursiv, wie z. B. "DIR /S".

    /C    Befehl        Bestimmt den für jede Datei auszuführenden Befehl.
                        Befehlszeichenfolgen sollten in doppelten
                        Anführungszeichen eingeschlossen werden. 

                        Der Standardbefehl ist "cmd /c echo @file".

                        Folgende Variablen können in der
                        Befehlszeichenfolge verwendet werden:
                        @file    - Zeigt den Namen der Datei an.
                        @fname   - Zeigt den Dateinamen ohne
                                   Erweiterung an.
                        @ext     - Zeigt nur die
                                   Dateierweiterung an.
                        @path    - Zeigt den vollständigen Dateipfad an.
                        @relpath - Zeigt den relativen
                                   Dateipfad an.
                        @isdir   - Zeigt "TRUE" an, falls ein Dateityp ein
                                   Verzeichnis ist und "FALSE" für Dateien.
                        @fsize   - Zeigt die Dateigröße in Bytes
                                   an.
                        @fdate   - Zeigt das letzte Änderungsdatum
                                   der Datei an.
                        @ftime   - Zeigt die letzte Änderungszeit der
                                   Datei an.

                        Verwenden Sie Hexadezimalcode für Zeichen 
                        im Format 0xHH, um spezielle Zeichen in der
                        Befehlszeile miteinzubeziehen (z. B. 0x09 für
                        Tabbstop). Interne Befehle für cmd.exe
                        sollten auf "cmd /c" folgen.

    /D    Datum         Wählt Dateien mit einem Änderungsdatum größer
                        oder gleich (+), oder weniger oder gleich
                        (-), das angegebene Datum mit Format
                        "dd.MM.yyyy"; oder wählt Dateien, dessen letztes
                        Änderungsdatum größer oder gleich (+) dem
                        heutigen Datum plus "tt" Tagen oder oder weniger
                        oder gleich (-) heute minus "tt" Tagen. Gültige
                        Werte für "tt" sind Zahlen zwischen 0 und 32768.
                        Ohne Angabe wird "+" standardmäßig
                        verwendet.

    /?                  Zeigt diese Hilfe an.

Beispiele:
    FORFILES /?
    FORFILES  
    FORFILES /P C:\WINDOWS /S /M DNS*.* 
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 wurde vor 30 Tagben geändert"
    FORFILES /D 01.01.2001
             /C "cmd /c echo @fname ist seit dem 01.01.2001 neu"
    FORFILES /D +6.7.2010 /C "cmd /c echo @fname ist seit heute neu"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize" 
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
Beispiele

IIS Logdateien löschen

Nachfolgendes Skript löscht im IIS Logverzeichnis alle Dateien des Musters *ex*.log, die älter als 180 Tage sind (siehe Variable %age%). Die Löschaktionen werden tageweise aufgezeichnet und jene nach 7 Tagen entfernt (s. Variable %age2%).

set startdir="d:\irgendwo\"
@echo on
rem ============================================================
::
::  Cleanup IIS LOGS
::  uses forfiles to scan for older files
::
rem ------------------------------------------------------------
::  Quelle: https://www.axel-hahn.de
rem ============================================================

rem ------------------------------------------------------------
::  CONFIG
rem ------------------------------------------------------------
set logdir=C:\inetpub\logs\LogFiles
set age=180
set age2=7

set logfile="%logdir%\_cleanup_%date%.log"


rem ------------------------------------------------------------
::  MAIN
rem ------------------------------------------------------------

echo.
echo ===== Cleanup IIS LOGS older %age% days =====
echo.

echo LOG-DIR: %logdir%
echo.
cd /d %logdir% || goto error

echo START CLEANUP %date% %time% >>%logfile%

:: --- step 1: iis logs
echo %logdir% - iis logs older %age% days >>%logfile%
FORFILES /D -%age% /P %logdir% /S /M *ex*.log /C "cmd /C echo @path && del @path && echo @path >>%logfile%"

:: --- step 2: cleanup logs
echo %logdir% - cleanup logs older %age2% days >>%logfile%
FORFILES /D -%age2% /P %logdir% /M _cleanup_*.log /C "cmd /C echo @path && del @path && echo @path >>%logfile%"

echo CLEANUP FINISHED %date% %time% >>%logfile%

echo --- done!

timeout 30
goto end



:error
echo ERROR occured ... Skript wird beendet

:end


Übersicht