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.jpgnachH:\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.exeauf den Computer kopieren und direkt starten.- Falls man die Suche nach beliebigen Dateien beschleunigen möchte, kopiert man auch
Everything64.dllin dasselbe Verzeichnis. Damit braucht OnFile mit der Option-evauch Everything.