之前没有写过bat脚本,学习了半个小时,感觉跟shell功能都一样,大同小异。
FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法!
先把FOR的变量全部列出来:
~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
set ffmpeg_dir=D:ffmpegffmpegin set video_dir=D:ffmpeg 101 ::set /p video_dir=请输入视频所在的完整路径: ::set /p complete_dir=请输入视频处理后的路径: ::转换video_dir目录下所有MP4的文件到指定的complete_dir目录下 for %%i in (%video_dir%*.mp4) do ( ::m编码 ::判断文件夹是否存在,不存在创建 if exist %video_dir%%%~nim (echo "已经存在文件夹") else ( md %video_dir%%%~nim ) %ffmpeg_dir%ffmpeg.exe -i %%i -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nim%%~nim%%~xi %ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nim\%%~nim%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nim\%%~nim.m3u8 -segment_time 10 %video_dir%%%~nim\%%~nim_%%03d.ts ::h编码 if exist %video_dir%%%~nih (echo "已经存在文件夹") else ( md %video_dir%%%~nih ) %ffmpeg_dir%ffmpeg.exe -i %%i -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nih%%~nih%%~xi %ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nih\%%~nih%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nih\%%~nih.m3u8 -segment_time 10 %video_dir%%%~nih\%%~nih_%%03d.ts ::g编码 if exist %video_dir%%%~nig (echo "已经存在文件夹") else ( md %video_dir%%%~nig ) %ffmpeg_dir%ffmpeg.exe -i %%i -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nig%%~nig%%~xi %ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nig\%%~nig%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nig\%%~nig.m3u8 -segment_time 10 %video_dir%%%~nig\%%~nig_%%03d.ts ) pause