foja.filmer
Goto Top

Verschieben und Umbenennen von Video-Dateien anhand der Nummer im Namen

Hallo,

da ich mich in der Batch Programmierung nicht auskenne, bitte ich um eure Unterstützung.

Ich möcht mit einer Batch-Datei Video-Bilder sortieren. Im Video-Ordner können bis zu 50000 Dateien sein. Sie werden von der Kamera wie folgt ausgegeben.

Blackmagic Cinema Camera_1_2015-09-18_2046_C0001_000001.dng
Blackmagic Cinema Camera_1_2015-09-18_2046_C0001_000002.dng
Blackmagic Cinema Camera_1_2015-09-18_2046_C0001_000003.dng

Die Batch - Datei sollte im Video Datei Ordner ausgeführt werden.
Die ungradzahligen Dateien sollen in einen Unterordner "A" und die gradzahligen in einen Unterordner "B" verschoben werden. Außerdem sollte der Name und die Endung erhalten bleiben, nur die letzten 6 Zeichen sollten dann neu fortlaufend durchnummeriert werden. Zum Beispiel im Ordner A wird 1 zu 1, 3 zu 2, 5 zu 3 usw. umbenannt. In B wird 2 zu 1, 4 zu 2, 6 zu 3 usw.

Ist das mit einer Batch-Datei möglich?

Content-Key: 309477

Url: https://administrator.de/contentid/309477

Printed on: April 25, 2024 at 23:04 o'clock

Member: rubberman
Solution rubberman Jul 10, 2016 updated at 14:48:12 (UTC)
Goto Top
Hallo Foja.Filmer

Sollte machbar sein.
@echo off &setlocal EnableDelayedExpansion

md "A"  
md "B"  

set /a "nA=1000000, nB=1000000"  
for /f "delims=" %%i in ('dir /a-d /b /on *.dng') do (  
  set "name=%%~ni"  
  set /a "num=1!name:~-6!, odd=num&1"  
  if !odd!==1 (
    set /a "nA+=1"  
    move "%%i" "A\!name:~,-6!!nA:~-6!%%~xi"  
  ) else (
    set /a "nB+=1"  
    move "%%i" "B\!name:~,-6!!nB:~-6!%%~xi"  
  )
)
Grüße
rubberman
Mitglied: 129813
129813 Jul 10, 2016 updated at 15:02:05 (UTC)
Goto Top
Or
@echo off
Set "folder=c:\Images"  
Set "folderA=c:\Images\A"  
Set "folderB=c:\Images\B"  

Powershell -executionpolicy bypass -command "gci '%folder%' -Filter *.dng | ?{$_.Basename -match '^(.*?)(\d+)$' } | group {[int32]($matches[2]) %% 2 -eq 0} | %%{if ($_.Name -eq $true){$target = '%folderA%'}else{$target = '%folderB%'}; $cnt = 1; $_.Group | %%{move-item $_.Fullname -Destination {($target + '\' + ($_.Basename -replace '(\d+)$',($cnt.toString().padleft('0',6)) + $_.Extension))}; $cnt++}}"  
Regards
Member: Foja.Filmer
Foja.Filmer Jul 10, 2016 at 15:27:08 (UTC)
Goto Top
Hallo rubberman,

vielen Dank für Deine Bemühungen, funktioniert wunderbar, Problem ist gelöst, bin hocherfreut.

Gruß

Foja.Filmer