Если проблема заключается в попытке удалить все каталоги в дереве из буквы диска, First Directory TO Last Folder, File; - Пример: C:\smallVideoFiles\
& \Back to the Future\BTF.mkv
Тогда это решение, которое вы можете искать.
Чтобы найти букву диска и первый каталог, мы можем использовать простой цикл с tokens=1,2,3* delims=\
. %%A
& %%B
будут единственными важными данными, которые нам нужны.
for /f "tokens=1,2,3* delims=\" %%A in ('echo %%~dpi') do (
Set "Drive=%%A\%%B"
)
Для получения последней папки это немного сложнее, но в общем смысле мы будем использовать цикл для сбора только последней папки, используя %%~nxA
.
Set "String=%%~dpi"
Set "String=!String:~0,-1%!"
Set "FileName=%%~nxi"
for %%A in (!String!) do (
set "LastFolder=%%~nxA"
)
Объединяя эти строки вместе, мы получаем ваш новый каталог.
Batchfile.bat:
@ECHO OFF
@setlocal EnableDelayedExpansion
set /p src="Source Directory"
set /p trg="Target Directory"
call strLen.cmd %src% len
for /R "%src%" %%i in (*.mp4 *.mkv) do (
Echo Original: %%i
Rem | Get Drive Letter & First Dir
for /f "tokens=1,2,3* delims=\" %%A in ('echo %%~dpi') do (
Set "Drive=%%A\%%B"
)
Rem | Get File.Extension & One Dir Back
Set "String=%%~dpi"
Set "String=!String:~0,-1%!"
Set "FileName=%%~nxi"
for %%A in (!String!) do (
set "LastFolder=%%~nxA"
)
Echo New: !Drive!\!LastFolder!\!FileName!
Rem | Continue Code
ffmpeg.exe -y -analyzeduration 99999999999 -probesize 99999999999 -i "%%f" -preset medium -rc vbr_hq -cq 22 -pix_fmt yuv420p -c:a copy -c:s copy -c:v hevc_nvenc "%trg%\temp\%subpath%.mkv"
pause
cls
robocopy /s /mov "%trg%\temp" "%trg%"
pause
cls
rd /q /s "%trg%\temp"
pause
cls
)
pause