Nabend zusammen,
ich habe ein kleines Problem: Ich habe hier zwei Batch-Dateien, die zwei verschiedene Aufgaben erledigen:
Die erste prüft verschiedene Dateien in einem Ordner auf Sonderzeichen und entfernt diese. Die zweite Batch fügt verschiedene Mediendateien zusammen. Ich möchte jetzt beide Programme in einer Batch vereinen - so dass zuerst die Ordner (samt Unterordner) auf Sonderzeichen geprüft und danach die Dateien zusammengefügt werden. Das funzt aber nicht ganz, es wird immer nur der erste Teil abgearbeitet, aber es wird nicht in den zweiten gegangen.
Ich denke mir aber, dass das so schwierig gar nicht sein kann.
Das sind die Einzelteile:
Beim Zusammenfügen wird in dem jeweiligen Ordner erst die Dateien ermittelt, die Namen in eine Textdatei geschrieben, von dem Tool (ffmpeg) anhand dieser zusammengefügt und die Textdatei danach gelöscht.
Meine Idee war dann
Das funktioniert leider nicht. Hätte jemand eine Idee, was ich ändern müsste?
Besten dank!
Michael
ich habe ein kleines Problem: Ich habe hier zwei Batch-Dateien, die zwei verschiedene Aufgaben erledigen:
Die erste prüft verschiedene Dateien in einem Ordner auf Sonderzeichen und entfernt diese. Die zweite Batch fügt verschiedene Mediendateien zusammen. Ich möchte jetzt beide Programme in einer Batch vereinen - so dass zuerst die Ordner (samt Unterordner) auf Sonderzeichen geprüft und danach die Dateien zusammengefügt werden. Das funzt aber nicht ganz, es wird immer nur der erste Teil abgearbeitet, aber es wird nicht in den zweiten gegangen.
Ich denke mir aber, dass das so schwierig gar nicht sein kann.
Das sind die Einzelteile:
Code:
for /f "delims=" %%a in ('dir /a:-d /o:n /b /s') do call :next "%%a"
GOTO:EOF
:next
set "newname=%~nx1"
set "newname=%newname:!=%"
set "newname=%newname:'=%"
ren %1 "%newname%
Beim Zusammenfügen wird in dem jeweiligen Ordner erst die Dateien ermittelt, die Namen in eine Textdatei geschrieben, von dem Tool (ffmpeg) anhand dieser zusammengefügt und die Textdatei danach gelöscht.
Code:
chcp 65001
Setlocal EnableDelayedExpansion
@echo off
REM dir /a:d /b > "dir-list.txt"
for /F "delims=" %%i IN ('dir /a:d /b') DO (
set ordner=%%i
(for %%a in ("!ordner!/*.mp4") do @echo file '%%a') > "!ordner!/!ordner!.txt"
"C:\Program Files\ffmpeg\ffmpeg.exe" -safe 0 -f concat -i "!ordner!/!ordner!.txt" "!ordner!/!ordner!.mp4"
del "!ordner!\!ordner!.txt"
del "!ordner!\*.mp4"
)
pause
Meine Idee war dann
Code:
chcp 65001
Setlocal EnableDelayedExpansion
@echo off
for /f "delims=" %%a in ('dir /a:-d /o:n /b /s') do call :next "%%a"
GOTO:merge
:next
set "newname=%~nx1"
set "newname=%newname:!=%"
set "newname=%newname:'=%"
ren %1 "%newname%
:merge
for /F "delims=" %%i IN ('dir /a:d /b') DO (
set ordner=%%i
(for %%a in ("!ordner!/*.mp4") do @echo file '%%a') > "!ordner!/!ordner!.txt"
"C:\Program Files\ffmpeg\ffmpeg.exe" -safe 0 -f concat -i "!ordner!/!ordner!.txt" "!ordner!/!ordner!.mp4"
del "!ordner!\!ordner!.txt"
del "!ordner!\*.mp4"
)
pause
Das funktioniert leider nicht. Hätte jemand eine Idee, was ich ändern müsste?
Besten dank!
Michael