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-Key: 6416669312

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

Printed on: May 5, 2024 at 17:05 o'clock

Member: micneu
micneu Mar 19, 2023 updated at 00:13:13 (UTC)
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
Member: pittrich67
pittrich67 Mar 19, 2023 at 09:32:16 (UTC)
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.
Mitglied: 6247018886
Solution 6247018886 Mar 19, 2023 updated at 10:20:24 (UTC)
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
Member: pittrich67
pittrich67 Mar 19, 2023 at 11:14:29 (UTC)
Goto Top
Vielen Dank 🙏
Das ging ja wirklich mega schnell und die *.bat läuft reibungslos 👍