pittrich67
Goto Top

Videodatei aus Unterordner in Hauptordner verschieben und nach Hauptordner-Namen umbenennen

Hallo Experten,

ich habe mich hier schon ein wenig eingelesen, aber es scheint keine passende Batch dabei zu sein.
Mein Ausgangspunkt ist folgender:

- variabler Laufwerk als rootverzeichnis
- Zielordner "ich bin der hauptordner"
- Unterordner "ich.bin.der.unterordner"
- im "ich.bin.der.unterordner" liegen die Dateien "ich.will.in.den.hauptordner.mp4" und
"ich.will.nicht.in.den.hauptordner.txt" und "ich.will.nicht.in.den.hauptordner.jpg"

Mein Wunsch ist, dass die
- Videodatei "ich.will.in.den.hauptordner.mp4" unter Beibehaltung der Dateiendung
- nach "ich bin der hauptordner" verschoben und in "ich bin der hauptordner.mp4" umbenannt wird
- und der Unterordner "ich.bin.der.unterordner" mit den verbliebenen Dateien "ich.will.nicht.in.den.hauptordner.txt"
und "ich.will.nicht.in.den.hauptordner.jpg" gelöscht wird.

Das sind natürlich nur stellvertretende Ordner- und Dateinamen. Es gibt im root der variablen Laufwerke ähnliche Ordner nur mit anderen Namen.
Es wäre super, wenn mir jemand ein funktionierendes Script zur Verfügung stellen könnte.

Content-ID: 6416669312

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

Ausgedruckt am: 23.11.2024 um 13:11 Uhr

micneu
micneu 19.03.2023 aktualisiert um 01:13:13 Uhr
Goto Top
zeig doch mal deinen code, BATCH bin ich nicht mehr so fit, warum nutzt du nicht Powershell, das ist schon sehr mächtig

hier habe ich mal kurz gebaut, es fehlt noch einiges aber so kann man starten

$QUELLE = "ich.bin.der.unterordner"  
$INHALT = Get-ChildItem $QUELLE\*.mp4 -Name
$NAME = $INHALT.Replace('.', ' ').Replace(' mp4', '.mp4 ')  
$INHALT
$NAME
pittrich67
pittrich67 19.03.2023 um 10:32:16 Uhr
Goto Top
Erst einmal danke für deine schnelle Antwort.
Den Code, die Batch kann ich nicht zeigen, da ich ihn hier aus dem Forum habe und wegen nicht funktionieren wieder gelöscht habe.
Was deine Lösung angeht, ist sie für mich eher unpraktikabel. Ich hätte gern eine *.bat, die ich im root des Laufwerks ablege, um jeden Ordner - oder eben auch alle auf einmal - auf die Batch zu ziehen, um das Verschieben, umbenennen und löschen auszulösen.
6247018886
Lösung 6247018886 19.03.2023 aktualisiert um 11:20:24 Uhr
Goto Top
Moin.
Batch zum mehrere Ordner drauf ziehen ...
@echo off
:start
if "%~1" == "" goto :eof  
set "foldername=%~n1"  
for /f "delims=" %%a in ('dir /b /s /a-d "%~1\*.mp4"') do (move "%%a" "%~1\%foldername%%%~xa" && rd /s /q "%%~dpa")  
shift
goto start
Oder gleich die Powershell
param([string[]]$folder)
Get-ChildItem $folder -File -Filter *.mp4 -Recurse | %{
    move-item $_.Fullname -Destination "$($_.Directory.Parent.Fullname)\$($_.Directory.Parent.Name)$($_.Extension)" -verbose  
    remove-item $_.DirectoryName -Recurse -Force
}
Ausführung
.\script.sp1 "D:\Ordner1","D:\Ordner2","D:\Ordner3"
Ich hätte gern eine *.bat, die ich im root des Laufwerks ablege
Und ich hät jetzt gern nen zweiten Kaffee ...

Cheers briggs
pittrich67
pittrich67 19.03.2023 um 12:14:29 Uhr
Goto Top
Vielen Dank 🙏
Das ging ja wirklich mega schnell und die *.bat läuft reibungslos 👍