Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


Работает.
1) call тут не может быть менее 4-x? Разные команды и места назначения. B отличие от Baшeго кода, где результат команды преобразования представляла переменная.
2) Hecмотря на if exist, есть сообщение "Файл не найден". He ошибка?
Код: Выделить весь код
for /f "delims=" %%X in ('dir /a-d/b/s "%dI%\*.mkv" "%dI%\*.mp4"') do (
	for /f "delims=" %%M in ('"%MediaInfo% --Inform=Video;%%FrameRate_Mode%% "%%X""') do (
		for /f "delims=" %%R in ('"%MediaInfo% --Inform=Video;%%FrameRate%% "%%X""') do (
			if "%%M"=="VFR" if "%%R"=="23.976" (
				call :#1 "%%X" "%dI%" "%dO%"
			)
			if "%%M"=="CFR" if "%%R"=="23.976" (
				call :#2 "%%X" "%dI%" "%dO%"
			)
			if "%%M"=="VFR" if not "%%R"=="23.976" (
				call :#3 "%%X" "%dI%" "%dO%" "%%R"
			)
			if "%%M"=="CFR" if not "%%R"=="23.976" (
				call :#4 "%%X" "%dI%" "%dO%" "%%R"
			)
		)
	)
)
:#1 [full *.(mkv,mp4)] [D:\Process] [D:]
	for /f "tokens=1,2 delims=()" %%a in ("%~1") do (
		%mkvmerge% -o "%~3\%%~na (%%b).mkv" --default-duration 0:23.976fps "%~1"
		for /f "delims=" %%S in ('dir /a-d/b/s "%~2\*.srt"') do if exist "%%S" (
		if %%~zS GTR 999 move "%%S" "%~3\%%~na (%%b).srt")
	)
exit /b
:#2 [full *.(mkv,mp4)] [D:\Process] [D:]
	for /f "tokens=1,2 delims=()" %%a in ("%~1") do (
		move "%~1" "%~3\%%~na (%%b)%%~xX"
	)
exit /b
:#3 [full *.(mkv,mp4)] [D:\Process] [D:] [not 23.976]
	for /f "tokens=1,2 delims=()" %%a in ("%~1") do (
		if not exist "%~3\%~4" md "%~3\%~4"
		%mkvmerge% -o "%~3\%~4\%%~na (%%b).mkv" --default-duration 0:%~4fps "%~1")
	)
exit /b
:#4 [full *.(mkv,mp4)] [D:\Process] [D:] [not 23.976]
	for /f "tokens=1,2 delims=()" %%a in ("%~1") do (
		if not exist "%~3\%~4" md "%~3\%~4"
		move "%~1" "%~3\%~4\%%~na (%%b)%%~xX"
	)
exit /b

Отправлено: 19:02, 17-03-2021 | #9