我想扫描一个文件夹,其路径由用户输入定义,最后应用 ffmpeg 将所有媒体文件信息存储到一个文本文件中。以下代码不起作用
@echo off
setLocal EnableDelayedExpansion
set /P "path=Enter folder path: "
dir %path% /B /O:N | findstr ".wmv$ .mpg$ .mkv$ .mpeg$ .mp4$ .avi$" >filename.txt
echo. >info.txt
for /f "tokens=* delims= " %%a in ('type filename.txt') do (
set in=%in%%%a
ffprobe "%path%!in!" 2>>info.txt
)
pause
但是,如果我按如下方式剥离用户输入,代码是否有效?
@echo off
setLocal EnableDelayedExpansion
::set /P "path=Enter folder path: "
dir d:\Trainers\out\outt\ /B /O:N | findstr ".wmv$ .mpg$ .mkv$ .mpeg$ .mp4$ .avi$" >filename.txt
echo. >info.txt
for /f "tokens=* delims= " %%a in ('type filename.txt') do (
set in=%in%%%a
ffprobe "d:\Trainers\out\outt\!in!" 2>>info.txt
)
pause
上面的脚本放在包含 ffprobe.exe 的文件夹中,它成功地在同一个目录中创建了两个 txt 文件注意这d:\Trainers\out\outt\
是扫描媒体文件的目录而不是执行此 bat 文件的目录 ffprobe 的基本语法是
ffprobe "videofile"