使用批处理文件检查 ffmpeg 文件完整性并在错误时重命名

使用批处理文件检查 ffmpeg 文件完整性并在错误时重命名

我找到了检查文件错误的代码,它会创建一个包含内容的日志文件。有没有办法修改它并重命名有错误的文件,而不重命名没有错误的文件?

@echo off

set "filtro=%1"
if [%filtro%]==[] (
    set "filtro=*.mp4"
    )

for /R %%a in (%filtro%) do call :doWork "%%a"

    PAUSE
    exit /B

:doWork
    "F:\- error check\ffmpeg.exe" -v error -i %1 -f null - > "%~1.log" 2>&1

答案1

1)尝试使用delayed expansion对于您的变量:

setlocal enabledelayedexpansion

2)验证某些扩展(%~x1) 在论证中被提供:

if /i "%~x1"=="" (set "_filtro=.mp4") else set "_filtro=%~x1"

3)使用For /FWhere.exe /Rloop 命令,你可以在其中递归列表/流程你的文件:

for /f "tokens=* delims= " %%i in ('%__APPDIR__%where.exe /r . "*!_filtro!"'

4)利用运营商||,用于重命名任何有错误的文件:

"!_ffmpeg!" -i "%%~i" -v error -f null - || ren "%%~i" "%%~ni_ERROR_%%~xi"

5)使用Clip命令将您的日志文件内容复制到您的剪贴板/Crtl+C

type .\error.log|"%__APPDIR__%clip.exe"

6)如果你愿意,你也可以替换PauseTimeout.exe,和/或,exit /bgoto :EOF

"%__APPDIR__%timeout.exe" /t -1 & endlocal & goto :EOF

@echo off && setlocal enabledelayedexpansion

echo\ & cd/d "%~dp0" && >nul cd.>.\error.log

set "_ffmpeg=F:\- error check\ffmpeg.exe"
if /i "%~x1"=="" (set "_filtro=.mp4") else set "_filtro=%~x1"

echo\Filtro: ..\*!_filtro! && for /f "tokens=* delims= " %%i in ('%__APPDIR__%where.exe /r . "*!_filtro!"'
)do echo\%%~i && 2>>error.log ("!_ffmpeg!" -i "%%~i" -v error -f null - || ren "%%~i" "%%~ni_ERROR_%%~xi")

type error.log | "%__APPDIR__%clip.exe" & "%__APPDIR__%timeout.exe" /t -1 & endlocal & goto :EOF

  • 压缩格式的相同代码:
@echo off && setlocal enabledelayedexpansion && echo\ & cd/d "%~dp0" & >nul cd.>.\error.log

set "_ffmpeg=F:\- error check\ffmpeg.exe" && if /i "%~x1"=="" (set "_filtro=.mp4") else set "_filtro=%~x1"
echo\Filtro: ..\*!_filtro! && for /f "tokens=* delims= " %%i in ('%__APPDIR__%where.exe /r . "*!_filtro!"'
)do echo\%%~i && 2>>error.log ("!_ffmpeg!" -i "%%~i" -v error -f null - || ren "%%~i" "%%~ni_ERROR_%%~xi")
echo/ && type .\error.log|"%__APPDIR__%clip.exe" & "%__APPDIR__%timeout.exe" /t -1 & endlocal & goto :EOF

对于命令行帮助,您可以使用/?

Ren /?, For /?,Where /?, Endlocal /?, Goto /?, Timeout /?, SetLocal /?, if /?

在互联网上,您可以获得更多有关以下方面的帮助:

相关内容