Kopieren von Dateien nach mehreren Kriterien (Dateinamen)
Hallo,
ich möchte gerne mehrere Filterkriterien (betrifft Dateinamen) gleichzeitig anwenden um Dateien aus einem Verzeichnis in ein anderes Verzeichnis zu kopieren.
Ich weiß, wie das mit mehreren COPY Befehlen hintereinander funktioniert, auch mit der Windows Suche geht das.
Aber viel besser wäre eine Liste zu haben aller verschiedenen "UND und ODER Kriterien" welche dann per batch Befehl in einem Rutsch abgearbeitet wird.
Details zur Erläuterung:
Ich extrahiere aus zigtausenden 4K CCTV Videos Fotos (jpg) und erstelle daraus dann timelapse Videos (alles mit FFMPEG).
Die Dateinamen sind z.B. :
"2023_01_07_16_49_07___0063430844416__c03_repaired__0012_00001.jpg"
"2023_01_08_11_19_07___0142887739392__c03_repaired__0019_00001.jpg"
usw. usw.
Um aus Fotos timelapse Videos erstellen zu können, benötige ich verschiedene Fotoreihen.
Diese verschiedenen Fotoreihen muss ich aus dem Gesamtbestand von mehreren hunderttausend Fotos herauskopieren.
Das möchte ich gerne mit so wenig Arbeitsschritten wie möglich machen.
Z.B.:
1.
- alle Aufnahmen von 6 bis 18 Uhr (s. timestamp Uhrzeit im Dateinamen)
2023_01_07_06_49_07___0063430844416__c03_repaired__0013_00001.jpg
2023_01_07_07_49_07___0063430844416__c03_repaired__0026_00001.jpg
usw.
UND
2.
- alle Aufnahmen einer bestimmten Kamera (Kamera 3 = "c03" usw.)
2023_01_07_16_49_07___0063430844416__c03_repaired__0013_00001.jpg
2023_01_07_17_49_07___0063430844416__c03_repaired__0092_00001.jpg
UND
3.
- Bilder mit bestimmten Nummern (die Bilderzahl bestimmt die Geschwindigkeit der timelapse Videos)
2023_01_07_16_49_07___0063430844416__c03_repaired__0012_00001.jpg
2023_01_07_16_49_07___0063430844416__c03_repaired__0030_00001.jpg
usw.
Mehrfach mehrere Filterkriterien manuell abarbeiten ist auf Dauer nervig, eine Automatik wäre daher super.
Die Nummerierungen mit einem Zähler zu filtern/abzuarbeiten ("jede 6. Datei") funktioniert übrigens nicht, da in dem Verzeichnis verschiedene Zahlenreihen vorkommen (mal 1 bis 70, mal 1 bis 91).
Ist es möglich mit vertretbarem Aufwand (und möglichst in einem Rutsch) Dateien nach verschiedenen Kriterien (Dateinamen) zu kopieren?
Ich hab übrigens alle FFMPEG Arbeitsschritte bereits als batch Dateien geschrieben.
Falls die Lösung ebenfalls in Form einer batch Datei (statt Powershell) möglich ist, das wäre super.
ich möchte gerne mehrere Filterkriterien (betrifft Dateinamen) gleichzeitig anwenden um Dateien aus einem Verzeichnis in ein anderes Verzeichnis zu kopieren.
Ich weiß, wie das mit mehreren COPY Befehlen hintereinander funktioniert, auch mit der Windows Suche geht das.
Aber viel besser wäre eine Liste zu haben aller verschiedenen "UND und ODER Kriterien" welche dann per batch Befehl in einem Rutsch abgearbeitet wird.
Details zur Erläuterung:
Ich extrahiere aus zigtausenden 4K CCTV Videos Fotos (jpg) und erstelle daraus dann timelapse Videos (alles mit FFMPEG).
Die Dateinamen sind z.B. :
"2023_01_07_16_49_07___0063430844416__c03_repaired__0012_00001.jpg"
"2023_01_08_11_19_07___0142887739392__c03_repaired__0019_00001.jpg"
usw. usw.
Um aus Fotos timelapse Videos erstellen zu können, benötige ich verschiedene Fotoreihen.
Diese verschiedenen Fotoreihen muss ich aus dem Gesamtbestand von mehreren hunderttausend Fotos herauskopieren.
Das möchte ich gerne mit so wenig Arbeitsschritten wie möglich machen.
Z.B.:
1.
- alle Aufnahmen von 6 bis 18 Uhr (s. timestamp Uhrzeit im Dateinamen)
2023_01_07_06_49_07___0063430844416__c03_repaired__0013_00001.jpg
2023_01_07_07_49_07___0063430844416__c03_repaired__0026_00001.jpg
usw.
UND
2.
- alle Aufnahmen einer bestimmten Kamera (Kamera 3 = "c03" usw.)
2023_01_07_16_49_07___0063430844416__c03_repaired__0013_00001.jpg
2023_01_07_17_49_07___0063430844416__c03_repaired__0092_00001.jpg
UND
3.
- Bilder mit bestimmten Nummern (die Bilderzahl bestimmt die Geschwindigkeit der timelapse Videos)
2023_01_07_16_49_07___0063430844416__c03_repaired__0012_00001.jpg
2023_01_07_16_49_07___0063430844416__c03_repaired__0030_00001.jpg
usw.
Mehrfach mehrere Filterkriterien manuell abarbeiten ist auf Dauer nervig, eine Automatik wäre daher super.
Die Nummerierungen mit einem Zähler zu filtern/abzuarbeiten ("jede 6. Datei") funktioniert übrigens nicht, da in dem Verzeichnis verschiedene Zahlenreihen vorkommen (mal 1 bis 70, mal 1 bis 91).
Ist es möglich mit vertretbarem Aufwand (und möglichst in einem Rutsch) Dateien nach verschiedenen Kriterien (Dateinamen) zu kopieren?
Ich hab übrigens alle FFMPEG Arbeitsschritte bereits als batch Dateien geschrieben.
Falls die Lösung ebenfalls in Form einer batch Datei (statt Powershell) möglich ist, das wäre super.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 11618456378
Url: https://administrator.de/contentid/11618456378
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
nur laut gedacht ...
Das was du da vorhast klingt nach einer Abfrage / einem Query. Windows hat(te) das WMIC Kommandozeilentool, was aber seit Win 10 als veraltet markiert ist und sicher derart komplexe Abfragen sowieso nicht verarbeitet bekommen würde. Heißt, du musst auf andere Sprachen zurückgreifen, die WMI Queries (oder besser gleich CIM Queries) unterstützen. PowerShell zum Beispiel. Zur Sprache des Scripts, musst du dich zusätzlich in die Abfragesprache / Query Language einarbeiten, um auf die entsprechenden Klassenobjekte wie CIM_DataFile usw. zuzugreifen. Diese Query Strings werden dann aber auch entsprechend lang und sie für deine Filter jeweils neu zu schreiben oder anzupassen benötigt ein bisschen Übung. Das bleibt aber definitiv immer so, solang du bei einem Text Interface bleiben willst.
Alternativ müsstest du einmalig sehr viel mehr Zeit dafür investieren, dir ein grafisches Interface mit Dropdown Feldern für Daten und Operatoren zu schreiben, mit dem entsprechenden Backend was daraus die Queries kreiert und ausführt, versteht sich.
Grüße
Steffen
nur laut gedacht ...
Das was du da vorhast klingt nach einer Abfrage / einem Query. Windows hat(te) das WMIC Kommandozeilentool, was aber seit Win 10 als veraltet markiert ist und sicher derart komplexe Abfragen sowieso nicht verarbeitet bekommen würde. Heißt, du musst auf andere Sprachen zurückgreifen, die WMI Queries (oder besser gleich CIM Queries) unterstützen. PowerShell zum Beispiel. Zur Sprache des Scripts, musst du dich zusätzlich in die Abfragesprache / Query Language einarbeiten, um auf die entsprechenden Klassenobjekte wie CIM_DataFile usw. zuzugreifen. Diese Query Strings werden dann aber auch entsprechend lang und sie für deine Filter jeweils neu zu schreiben oder anzupassen benötigt ein bisschen Übung. Das bleibt aber definitiv immer so, solang du bei einem Text Interface bleiben willst.
Alternativ müsstest du einmalig sehr viel mehr Zeit dafür investieren, dir ein grafisches Interface mit Dropdown Feldern für Daten und Operatoren zu schreiben, mit dem entsprechenden Backend was daraus die Queries kreiert und ausführt, versteht sich.
mit vertretbarem Aufwand
... hängt also extrem von deinen Skills ab, so etwas zu entwickeln.Grüße
Steffen
@echo off
set "quelle=d:\quelle"
set "ziel=d:\ziel"
PowerShell -EP Bypass -C "Get-ChildItem -LiteralPath '%quelle%' -File -Filter *.jpg | ? Basename -match '^\d{4}_\d{2}_\d{2}_(0[6-9]|1[0-7])_\d{2}_\d{2}___.+?__c03_.+?__(0030|0012)' | copy-item -Destination '%ziel%' -verbose"
Gruß