@echo off
setlocal
call :validateConcatFile clipstomerge.txt 2048
if errorlevel 1 echo Failed.& exit /b 1
echo Passed.
exit /b
:validateConcatFile concatFile acceptableSize
if "%~1" == "" exit /b 2
if "%~2" == "" exit /b 2
rem Check each listed media file.
for /f "usebackq tokens=1,2 delims='" %%A in ("%~1") do (
rem Check only if leading concat keyword is "file".
if "%%~A" == "file " (
rem The file needs to exist.
if not exist "%%~B" (
echo "%%~B" not exist.
exit /b 1
)
rem Check byte size.
for %%C in ("%%~B") do if %%~zC lss %~2 (
echo "%%~B" size is %%~zC which is less than %~2.
exit /b 1
) else echo "%%~B" size is %%~zC which is ok at %~2.
rem FFprobe scan.
ffprobe -i "%~1" > nul 2> nul || (
echo FFprobe set errorlevel with "%%~B".
exit /b 1
)
)
)
exit /b 0
Код охватывает некоторые основные идеи проблемы поврежденных файлов.Поскольку проблемы могут различаться в зависимости от многих концепций обнаружения коррупции, вы можете рассматривать это как начало, так как кто-то со временем может расширить код с помощью большего количества концепций обнаружения.
Специальные символы, используемые как экранированные символы и т. Д., Могут вызватьОбнаружение файла не существует.Обработка этих символов отличается трудностью, поэтому она недоступна в этом коде и будет возвращаться путем установки errorlevel
.
Другие обнаруженные действия:
- Для перечисленных файлов Concat необходимо
exist
для передачи. - Перечисленные файлы должны иметь как минимум определенный размер в байт для передачи.
- Перечисленные файлы должны пройти простое сканирование ffprobe для прохождения.
В примере кода первым аргументом вызываемой метки :validateConcatFile
является файл concat, равный clipstomerge.txt
, а вторым аргументом является 2048
, то есть размер в байтах, приемлемый для передачи.