借助常见工具快捷实现录音文件的查找与导出

最近blhy的客户提出这个需求,对方提供一批来电的流水号,让我们给出相应的录音文件。传统的情况下,客户方一般需要的是某一段时间内的录音,由于系统中的录音文件的文件名是按照年月日时分秒这个规则去命名的,所以这种情况下用命令查找和打包都比较方便。而现在是对方给我们的只是一段时间内的指定流水号。

说到这里你可能有两种思路:(1)看看这些流水号大致落在哪个时段范围内的,把这段时间内的录音文件全部打包导出,然后再从其中摘取目的文件;(2)将流水号拷贝过来,挨个从系统中去查找和下载录音文件。

个人认为这两种方法都有点问题,针对思路(1),如果总的录音文件少的话,还比较好处理,如果录音文件多的话,简直就是场灾难,首先你打包文件需要时间,另外你再从其中去找的话,无异于大海捞针,这里先假定录音文件名和流水号在名称上有对应关系;针对思路(2),挨个查找比较靠谱,但是如果对方给出的列表比较长的话,这就是一项重复的工作,伤神费力,也是一场灾难。

我通过观察发现,blhy提供的流水号是与录音文件名没有直接的关系的,所以我的思路是:先试图通过流水号去找到录音文件名中的局部或者全部(通过excel去匹配,主要是找到对应关系),然后组装命令(editplus工具或者其他),写成shell脚本,通过执行shell脚本去查找这些录音文件并打包压缩,最后通过winSCP工具导出到本地。

于是,按照这个思路,分下面几步走:

 

1、在数据库的call_pickup_specimen_info表中,存储的有流水号与录音文件名局部的对应关系,流水号是specimen_code这个字段,局部的录音文件名是userfield_id这个字段,于是通过在数据库中执行查找这两列的sql语句(例如SELECT specimen_code,userfield_id FROM `call_pickup_specimen_info` where specimen_code BETWEEN '2014090100110054' and '2014090623595954'),将这两列的数据查询出来,全选,复制到excel中;

2、将查找的流水号数据复制到excel的sheet2中,使用excel的VLOOKUP函数,将sheet2中的流水号对应的录音文件名局部的userfield_id信息匹配出来;

3、通过匹配得到userfield_id信息后,要考虑拼接linux命令了,完整的linux命令类似“find /var/spool/asterisk/monitor/1 -name '*20140825*' | xargs zip "/opt/blhytest.zip"。可以很明显的看出,我们需要在刚刚匹配出来的userfield_id信息的前后分别加上一段固定的内容,来拼接成我们所需要的linux命令。不喜欢黄师傅用的Notepad++,一直喜欢使用editplus这个文本编辑工具,推荐。将userfield_id复制到editplus之后,通过全选文本内容--右键“格式”--行注释--输入注释符,这里我写的是“find /var/spool/asterisk/monitor/1 -name '*”,也即命令的前半部分;通过“搜索”--“替换”菜单,将“\n”替换为“*' | xargs zip "/opt/blhytest.zip" \n”,注意勾选下面的“使用正则表达式”,即可在每行的末尾加入固定的内容,至此我们的命令已经拼接完成了,很快,至少比excel要快;

4、将该文件保存为.sh格式的文件,例如我写的是blhyexport.sh,通过winSCP工具上传到服务器上任意目录下,自己记得这个路径就行;

5、使用 "chmod 777 blhyexport.sh",为该文件授权;

6、通过"./blhyexport.sh"就可以执行该脚本打包录音文件了,屏幕闪现的是一行行的执行过程,整个打包的过程很快;

7、打包完毕,通过winSCP工具,分分钟就可以将打包的录音文件下载到本地了,这个压缩包里面的录音文件正是你想要的。

 

传统的依次复制流水号去查询并下载,需要浪费两三个小时甚至是一下午时间(视任务量多少而定),而使用上述方法,不论任务量有多少,不超过10分钟就可以搞定了。借助于我们熟悉的excel、editplus、linux命令,可以帮助我们快捷高效地完成任务。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用说明 : 1、本程序可以作什么? 本程序功能分为两个部分: 一部分是:批量查找指定路径下的文件中的内容中,是否包含要查询的项目。并把查询出的内容分文件存储。 一部分是:将文本文件导入EXCEL中,可以将上一步查找的结果导入,也可以自己选择文件导入(支持多选)。 2、如何使用他? a、批量查找: 首先,在“读入位置”按钮处设置你所要读取的文件的存放位置,此时程序会自动读入此文件夹下所有文件,以供选择;其次,用“>>”或“>”将要读取的文件选入读取队列,当然如果选错了可以用“<<”或“<”删除队列,或者鼠标双击选中项删除;再次,点击“+”按钮,添加查找项目到查找项目列表,一次只可以添加一条,如需添加多条则需要重复添加操作;如果添加错误可以双击选中项删除或选中后点击“-”按钮。最后,点击“开始查找”,程序将会把查找结果输出保存到指定路径下面的output文件夹下面,你可以选择是否打开目录查看。如果需要查询的文件文件头,可以选择“保留文件首行”。 b、EXCEL导入: 首先,选择导入方式,导入方式分为“查询结果导入”和“新选文件导入”两种;当选择“查询结果导入”时,本程序将把“读入位置”处“output”文件夹下文件批量导入EXCEL。当选择“新选文件导入”时,本程序在点击“开始导入”时将弹出窗口,您可以自己选择需要导入文件(支持多选),导入EXCEL。其次,设置导入文件时的分割符,默认为“|”,本程序只支持按照分隔符导入。最后,点击“开始导入”按钮开始导入。 3、本程序不判断所查找文件类型 由于本程序在读入文件时,并没有校验文件的内容和文件类型,因此本程序会读取用户所选择的任意文件,即使此文件是二进制格式的。不论是查询或者是导入功能都是这样。本程序将按行读取所选择的文件(或者有换行符的),在读取完文件后,无论是否找到,都会创建和源文件相同类型的文件,即使是.exe或.rar(一般是打不开的),文件名存储为“output”+原文件名。即使没有找到任何相匹配的内容,本程序也会创建文件,这时后文件大小是0字节,可以按照大小排列看到。 4、请使用“清除文件”按钮及时清除查询结果 程序在查询和创建文件的过程中,不会判断是否已经执行过查询操作。如果已经执行过查询操作,“output”文件夹下就会存在查询出的文件,当再次执行查询时,本程序会在已存在的文件后追加查询结果。这样就会出现重复的记录或内容。因此,当需要多次查询时,每次查询前需要点击“清空文件”按钮删除output文件夹,才能保证查找的准确。 5、本程序不会判断运行的环境,因此在运行过程中可能会有些未知的错误 本程序在win7环境,vs2012,Netframe4.0下编译通过。本程序支持winxp及以上操作系统。执行EXCEL导入的时候,需要安装Office。Office的版本在2003以上就可以。但是不同我Office版本对导入性能,有一定的影响。Excel2003,最多256列,即2的8次方,最多65536行,即2放入16次方; Excel2007及以上版本,最多16384列,即2的14次方,最多1048576行,即2的20次方。因此如果需要导入的单个文件的行数或者列数,超过了所安装Office版本的最多行列数,程序将会报错!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值