Verwenden Sie Forfiles, um Dateien nach Alter zu verarbeiten

Es ist immer gut, etwas Befehlszeilenmagie zu kennen, da es manchmal einfacher ist, Befehle auf diese Weise zu verarbeiten.

In diesem Handbuch wird der Befehl "Forfiles" unter Windows Vista und Windows 7 veranschaulicht (Update: Auch in neueren Versionen von Windows verfügbar).

Forfiles können Dateien basierend auf Namen, Dateierweiterungen und Alter verarbeiten. Es ist beispielsweise möglich, alle Dokumente in einem Verzeichnis zu finden, die älter als 20 Tage sind, oder alle Dokumente in c: \ Dokumente, die seit einem bestimmten Datum geändert wurden.

Der Befehl forfiles kann mit Verarbeitungsoptionen gekoppelt werden, um diese Dateien zu löschen oder eine Liste aller Dateien zu erstellen, die den Filtern entsprechen. Schauen wir uns den Befehl forfiles genauer an.

FORFILES [/ P Pfadname] [/ M Suchmaske] [/ S] [/ C Befehl] [/ D [+ | -] DD / MM / JJJJ ]

Beschreibung: Wählt eine Datei (oder mehrere Dateien) aus und führt einen Befehl für diese Datei aus. Dies ist hilfreich für Stapeljobs.

Parameterliste:

  • / P Pfadname Gibt den Pfad an, unter dem die Suche gestartet werden soll. Der Standardordner ist das aktuelle Arbeitsverzeichnis (.).
  • / M Suchmaske Sucht Dateien nach einer Suchmaske. Die Standardsuchmaske ist '*'.
  • / S Weist forfiles an, in Unterverzeichnisse zurückzukehren. Wie "DIR / S".
  • / C-Befehl Gibt den Befehl an, der für jede Datei ausgeführt werden soll. Befehlszeichenfolgen sollten in doppelte Anführungszeichen gesetzt werden. Der Standardbefehl lautet "cmd / c echo @file".

Die folgenden Variablen können in der Befehlszeichenfolge verwendet werden:

  • @file - gibt den Namen der Datei zurück.
  • @fname - gibt den Dateinamen ohne Erweiterung zurück.
  • @ext - gibt nur die Erweiterung der Datei zurück.
  • @path - gibt den vollständigen Pfad der Datei zurück.
  • @relpath - gibt den relativen Pfad der Datei zurück.
  • @isdir - gibt "TRUE" zurück, wenn ein Dateityp ein Verzeichnis ist, und "FALSE" für Dateien.
  • @fsize - gibt die Größe der Datei in Bytes zurück.
  • @fdate - gibt das letzte Änderungsdatum der Datei zurück.
  • @ftime - gibt die letzte geänderte Zeit der Datei zurück.

Verwenden Sie zum Einfügen von Sonderzeichen in die Befehlszeile den Hexadezimalcode für das Zeichen im Format 0xHH (z. B. 0x09 für die Registerkarte). Internen CMD.exe-Befehlen sollte "cmd / c" vorangestellt werden.

/ D Datum Wählt Dateien mit einem letzten Änderungsdatum größer oder gleich (+) oder kleiner oder gleich (-) des angegebenen Datums im Format "TT / MM / JJJJ" aus. oder wählt Dateien aus, deren letztes Änderungsdatum größer oder gleich (+) dem aktuellen Datum plus "dd" Tage oder kleiner oder gleich (-) dem aktuellen Datum minus "dd" Tage ist. Eine gültige "dd" -Anzahl von Tagen kann eine beliebige Zahl im Bereich von 0 bis 32768 sein. "+" Wird als Standardzeichen verwendet, wenn nichts angegeben ist.

/? Zeigt diese Hilfemeldung an. Diese Hilfedatei kann mit dem Befehl forfiles /? Geöffnet werden. in einer Eingabeaufforderung. Drücken Sie Windows-R, geben Sie cmd ein und drücken Sie die Eingabetaste, um die Befehlszeile in Windows zu starten.

Der Befehl forfiles /P c:\test\ /M .doc /S /D -10 durchsucht das Verzeichnis c: \ test und alle seine Unterverzeichnisse nach Dateien mit der Erweiterung .doc, die älter als 10 Tage sind.

Der Parameter / p gefolgt von einem Verzeichnis definiert das Startverzeichnis, / s schließt Unterverzeichnisse in die Suche ein, / m filtert die Dateien und Ordner basierend auf der eingegebenen Zeichenfolge und / D definiert das Datum oder eine Zeitspanne.

Mit dem Befehl / C werden die gefundenen Dateien weiterverarbeitet. Es kann zum Beispiel verwendet werden, um den folgenden Befehl auszuführen: /C "cmd /c echo @fname" > test.txt die Namen jeder gefundenen Datei aus und speichert die Ergebnisse in text.txt im selben Verzeichnis.

Der vollständige Befehl sieht dann folgendermaßen aus: forfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt

Eine andere Möglichkeit besteht darin, die zur Suche passenden Dateien zu löschen. Dies geschieht mit dem Befehl /C "cmd /c del @File

Es wird jedoch empfohlen, zuerst die Ausgabe zu testen, bevor der Befehl delete ausgegeben wird, um sicherzustellen, dass nur die richtigen Dateien gelöscht werden. Erfahrene Benutzer können eine Batch-Datei erstellen, um regelmäßig for-Dateien auszuführen.