stevenfreiburg
Goto Top

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.

Content-ID: 11618456378

Url: https://administrator.de/forum/kopieren-von-dateien-nach-mehreren-kriterien-dateinamen-11618456378.html

Ausgedruckt am: 22.12.2024 um 06:12 Uhr

rubberman
rubberman 24.05.2024 um 19:07:00 Uhr
Goto Top
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.

mit vertretbarem Aufwand
... hängt also extrem von deinen Skills ab, so etwas zu entwickeln.

Grüße
Steffen
13034433319
Lösung 13034433319 24.05.2024 aktualisiert um 22:09:26 Uhr
Goto Top
@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"  
https://tio.run/##jZDNTsMwEITvfgofKrktcrATN6UHVAkQiAviXqqVlayIIX8krhAQnj ...

Gruß
stevenfreiburg
stevenfreiburg 25.05.2024 aktualisiert um 10:16:17 Uhr
Goto Top
SUPER, vielen herzlichen Dank !!!

Funktioniert und Kriterien kann ich mit deiner Vorlage auch leicht selbst ändern.

Diese eine Zeile Code, genau das kann ich eben nicht und genau das habe ich gebraucht.