浏览 8825 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (4)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-08
最后修改:2011-05-08
需求:上传视频后,用php写bat文件到子目录,一个视频转化任务生成一个bat,如果转换成功(存在目标文件),则删除自身;在bat子目录之上(父目录)写一个bat,这个bat将被设置为windows计划任务来调用,并且它将自动遍历子目录下的bat执行. 1.判断文件是否存在,存在则删除自身子bat文件,避免执行过多文件导致冗余: if NOT exist E:/testvideo/1.jpg ( E:/ffmpeg/ffmpeg.exe -i E:/testvideo/1.flv -y -ss 00:00:09 -t 00:00:10 -s 320*240 -f mjpeg -vframes 10 E:/testvideo/1.jpg ) ELSE( del %0 ) del %0 就是删除子bat自身. 2.父bat遍历子目录: for /r E:/bat/child/ %%i in (*.bat) do call %%i 其中E:/bat/child/ 既是子bat所在目录.遍历并且执行,就可以了. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-08
这样批处理必然带来的一个问题:安全.
假如有人恶作剧,del服务器文件或者 format ,该如何防御? |
|
返回顶楼 | |
发表时间:2011-05-09
这种写法真是神人...lz赶紧回家翻翻dos bat用法吧
|
|
返回顶楼 | |
发表时间:2011-05-09
楼上指教下?
|
|
返回顶楼 | |
发表时间:2011-05-09
最后修改:2011-05-10
什么父父子子的bat,用一个bat就结了
@echo off :set_env if "" == "%FFMPEG_DIR%" set FFMPEG_DIR=E:\ffmpeg if "" == "%FFMPEG_PARAM%" set FFMPEG_PARAM=-y -ss 00:00:09 -t 00:00:10 -s 320*240 -f -i mjpeg -vframes 10 -i :check_argu if not "%1" == "" ( set FLV_ROOT=%1 ) else ( set FLV_ROOT=E:\balabala ) :exec for /r %FLV_ROOT% %%i in (*.flv) do ( if NOT exist %%~di%%~pi%%~ni.jpg ( %FFMP_DIR%\ffmpeg.exe %FFMPEG_PARAM% %%i %%~di%%~pi%%~ni.jpg rem 这里应该加入生成log ) ) :end |
|
返回顶楼 | |
发表时间:2011-05-09
您可能不了解项目需求呢.
视频是不定时的通过网站上传的. 而且您的代码是否涉嫌耗费资源呢. 我的 父bat 是一分钟执行一次的.您是不是要每隔一分钟去扫描一次系统文件? 所以我认为生成子bat是一个不错的方法.一旦确认文件生成成功,那么删除自身,下一次就不会再遍历了. 语法上虽有欠缺没有您写的那么高级,不过我写的通俗易懂些,不是吗? |
|
返回顶楼 | |
发表时间:2011-05-10
最后修改:2011-05-10
化蝶自在飞 写道 您可能不了解项目需求呢.
视频是不定时的通过网站上传的. 而且您的代码是否涉嫌耗费资源呢. 我的 父bat 是一分钟执行一次的.您是不是要每隔一分钟去扫描一次系统文件? 所以我认为生成子bat是一个不错的方法.一旦确认文件生成成功,那么删除自身,下一次就不会再遍历了. 语法上虽有欠缺没有您写的那么高级,不过我写的通俗易懂些,不是吗? 如果上传的时候就知道flv文件的路径,那只需要如下调用上面的bat ffmpeg.bat <路径>,何必多此一举。 就是要生成子bat,也就是生成很简单一行: call ffpmpeg.bat <路径> 这不是和明明一个for循环可以搞定的事情,你偏偏要写10遍一个道理 |
|
返回顶楼 | |
发表时间:2011-05-10
flv的路径是组装出来的,当然可以获取到.
比如xxx.rm 的flv就是 xxx.flv, 不能累加成 xxx.rm.flv 如果用批处理来做这个的话,是否有必要呢? 子bat是php写入的,不是人肉. bat的执行是windows计划任务做的.上传仅仅是写bat,不触发执行. |
|
返回顶楼 | |
发表时间:2011-05-12
程序不直接生成bat文件 而是生成一个文本文件,如格式为:
E:/testvideo/1.flv 00:00:09 00:00:10 320*240 jpeg E:/testvideo/1.jpg 你那个定时任务去读这个文件,也就不存在安全问题了 |
|
返回顶楼 | |