OnFile
ist ein Kommandozeilen-Tool, dass Dateien durchläuft und auf diesen Dateien wahlweise eine Operation durchführt.
OnFile <source directory> <target directory>
-h -help: shows help
-r: iterates the files (r)ecursively
-ev -everything: iterates the files with the tool (Ev)erything
-sim: (sim)ulates copying files
-do: the (c)ommand to be performed on each file
-ifexists: the following -do commands are performed only if the file exists
-ifnotexists: the following -do commands are performed only if the file does not exist
Beispiele
OnFile *.jpg Backup -do copy {sfull} {tfull}
- Kopiert alle .jpg-Dateien im aktuellen Verzeichnis in das Unterverzeichnis
Backup
.
OnFile *.jpg *.jpeg *.heic Backup -do copy {sfull} {tfull}
- Kopiert alle Bild-Dateien (.jpg, .jpeg, .heic) im aktuellen Verzeichnis in das Unterverzeichnis
Backup
.
OnFile *.jpg ..\Backup -do copy {sfull} {tfull} -r
- Kopiert alle .jpg-Dateien im aktuellen Verzeichnis in das Unterverzeichnis
..\Backup
. -r
: Führt die Operation rekursiv durch, d. h. berücksichtigt auch die Unterverzeichnisse des aktuellen Verzeichnisses
OnFile *.jpg -do copy {sfull} H:\Backup\{sdirname}\{sname} -r
- Kopiert alle .jpg-Dateien im aktuellen Verzeichnis in das Zielverzeichnis
H:\Backup\...
, beispielsweiseD:\Data\Photos\2025_01_22\img_001.jpg
nachH:\Backup\2025_01_22\img_001.jpg
. {sfull}
: D:\Data\Photos\2025_01_22\img_001.jpg{sdirname}
: 2025_01_22{sname}
: img_001.jpg
OnFile *.* H:\Backup -do echo {sname} -ifnotexists {tfull} -do copy {sfull} {tfull}
- Zeigt (
-do echo {sname}
) die Namen der Dateien im aktuellen Verzeichnis und kopiert nur diejenigen Dateien, bei denen die Zieldatei noch nicht existiert (-ifnotexists {tfull} -do copy {sfull} {tfull}
).
Everything
OnFile sucht Dateien optional (-ev
) mit Hilfe von Everything.
OnFile D:\Data\IMG50_*.jpg D:\Backup -do copy {sfull} {tfull} -r -ev
Der Unterschied liegt nur in der Geschwindigkeit, wie vor allem stark verteilte Dateien gefunden werden. Die Dateifilter funktionieren gleich wie im Normalbetrieb.
Beispiel: Textsuche in Dateien
Eine Suche nach einem Text in allen config.weblink
auf Laufwerk D:
sieht dann so aus:
OnFile D:\config.weblink -ev -r -do findstr /m yxngj76gl2b1 {sfull} 2>nul
findstr
: Sucht Text in Dateien/m
: Zeigt bei einem Treffer nur den Dateinamen an2>nul
: findstr wird vermutlich auf einige Dateien nicht zugreifen können. In diesem Fall wird eine Fehlermeldung angezeigt, was dieser Parameter unterdrückt.
Dateiplatzhalter
{sfull}
: source full name, e.g. D:\Photos\2025_01_23\img_001.jpg{tfull}
: target full name, e.g. D:\Backup\Photos\2025_01_23\img_001.jpg{sname}
: source name, e.g. img_001.jpg{tname}
: target name, e.g. img_001.jpg (always the same as {sname}){snamex}
: source name without extension, e.g. img_001{tnamex}
: target name without extension, e.g. img_001{sext}
: source file extension, e.g. jpg{text}
: target file extension, e.g. jpg{sdir}
: source directory, e.g. D:\Photos\2025_01_23{tdir}
: target directory, e.g. D:\Backup\Photos\2025_01_23{sdirname}
: source directory name, e.g. 2025_01_23{tdirname}
: source directory name, e.g. 2025_01_23{sdirbase}
: source directory base, e.g. D:\Photos{tdirbase}
: target directory base, e.g. D:\Backup\Photos
Downloads
Installation
OnFile.exe
auf den Computer kopieren und direkt starten.- Falls man die Suche nach beliebigen Dateien beschleunigen möchte, kopiert man auch
Everything64.dll
in dasselbe Verzeichnis. Damit braucht OnFile mit der Option-ev
auch Everything.