我找到了检查文件错误的代码,它会创建一个包含内容的日志文件。有没有办法修改它并重命名有错误的文件,而不重命名没有错误的文件?
@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 /F
和Where.exe /R
loop 命令,你可以在其中递归列表/流程你的文件:
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)如果你愿意,你也可以替换Pause
到Timeout.exe
,和/或,exit /b
到goto :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 /?
在互联网上,您可以获得更多有关以下方面的帮助: