用go语言编写办公脚本——根据txt内容搜索对应文件

最近工作中,需要处理大量的漏扫报告,需要根据不同的标准来将混在一起的报告分开,公司有个大佬直接写了.bat的批处理脚本,感叹一句,真强啊!!但是这个批处理脚本有一些玄学bug,大佬也没改出来,正好我最近想把go语言再复习复习,就用这个练练手吧。

需求

将文件名关键字筛选出来,存放到list.txt中,每行一个关键字,将混在一起的大量文件放到文件夹src中,运行脚本,将文件名包含关键字的文件放到result文件夹中。

源码

上源码!!!

····package mainimport ("fmt""os""io/ioutil""strings""io"
)//读取txt中需要查找的内容
func readfile(fileName string) (resultArray []string){//打开文件file, err := os.Open(fileName)if err != nil {panic(err)}defer file.Close()//读取文件内容content, err2 :=ioutil.ReadAll(file)if err2 != nil {panic(err2)}//fmt.Println(string(content))//按照回车将文件内容分割,返回一个切片result := strings.Split(string(content), "\n")//fmt.Println(result)return result
}//获取src文件夹中的文件名
func readFilePath(filePath string) (filenameList []string){//根据文件夹路径打开文件夹files, _ := ioutil.ReadDir(filePath)//定义切片var filePathList []string//将文件名放到切片中for _, f := range files {filePathList = append(filePathList, f.Name())}return filePathList
}//在目标文件夹中查找文件
func searchFileFromList(filenameList []string,fileList []string){//双重循环,filename是txt中的关键字,file是src中的文件名for _, filename := range filenameList {for _, file := range fileList {//字符串匹配if strings.Contains(file, filename) {//构建文件路径src := "./src/" + filedst := "./result/" + file//将文件复制到新文件夹_, err := copyFile(dst, src)if err != nil {fmt.Printf("copy fail:%v ", err)return}fmt.Println(file + " copy succeed")}}}
}//复制文件
func copyFile(dstName, srcName string) (written int64, err error) {//打开文件读取内容src, err := os.Open(srcName)if err != nil {fmt.Printf("open %s failed,err:%v.\n", srcName, err)return}defer src.Close()//打开目标文件dst, err := os.OpenFile(dstName, os.O_CREATE|os.O_WRONLY, 0644)if err != nil {fmt.Printf("open %s failed,err:%v.\n", dstName, err)return}defer dst.Close()//将源文件内容copy到目标文件return io.Copy(dst, src)
}func main() {//调用函数searchFileFromList(readfile("list.txt"),readFilePath("./src/"))
}

运行结果

脚本写的倒是没发现啥问题,有一点问题是我没有装本地环境,IDE用的是Lightly,这玩意儿是真好用,对于我这种电脑性能不咋地,用的语言又多的可太方便,但是问题在于在线的环境居然无法编译成.exe,这就太奇怪了,研究好久也没搞通,所以就没有测试.exe,希望有大佬能多指点指点

我的电脑安息之后,以前写的go的脚本都没了,后悔那段时间偷懒没记下来了/(ㄒoㄒ)/~~,未来这段时间再复习复习go,写写各种脚本,加油!!!

用go语言编写办公脚本——根据txt内容搜索对应文件相关推荐

  1. k易语言html导入超级列表框,易语言超级列表框导入TXT内容的方法分享!

    那么除了在超级列表框开发中添加数据之外,我们还怎么从TXT中导入内容? 下面本教程手把手教您怎么操作. 1.打开"易语言" 2.在"易语言"菜单栏中,选择&qu ...

  2. 编写Python脚本来获取Google搜索结果的示例

    前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童鞋不要再走弯路. 1. 搜索引擎的选取 选择一个好的搜索引擎 ...

  3. 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法

    C++读取WAV音频文件的头部数据的实现方法 前言: 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有 ...

  4. c语言编写服务器的优点,用C语言编写的服务器中记录效率最高的文件是什么?...

    使用线程通常是一个很好的解决方案,我们通过它有趣的结果. 需要记录的主线程准备日志字符串并将其传递给第二个线程.为了提供第二个线程,我们使用无锁队列+循环内存来尽量减少alloc/free和等待时间. ...

  5. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )

    文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...

  6. 使用记事本编写Ps脚本

    源自:http://coolketang.com/tutorials/menu1lesson2.php 欢迎大家学习Photoshop脚本,这一神奇又强大的工具. 大家可以使用三种语言编写Photos ...

  7. gg修改器怎么编写lua脚本

    gg修改器怎么编写lua脚本,gg修改器编写Lua脚本的例子 从搜索冻结值的数10.搜索前7次的结果被冻结为8的值. gg.searchNumber('10', gg.TYPE_DWORD)local ...

  8. 用c语言编写线反转法键盘输入,电子密码锁的方案设计书与实现[1]

    <电子密码锁的方案设计书与实现[1]>由会员分享,可在线阅读,更多相关<电子密码锁的方案设计书与实现[1](21页珍藏版)>请在技术文库上搜索. 1.沈阳理工大学创新实践周课程 ...

  9. 一次使用 Go 语言编写脚本的经历

    本文介绍了我如何尝试使用 Go 语言进行脚本编程的经历.文中我将讨论 Go 脚本的必要性,我们预期的表现以及可能的实现方式.在讨论过程中,我讲深入探讨脚本.Shell 和 Shebang.最终,我们将 ...

最新文章

  1. 基于koa2操作mysql封装例子
  2. python sys.exit_Python程序退出方式(sys.exit() os._exit() os.kill() os.popen(...))
  3. vue --- 使用vue在html上显示当前时间
  4. 鸿蒙科技与文化,数字阅读 | “华为鸿蒙”:当现代科技遇到古典文化
  5. wcf wpf mfc 区别
  6. Java8新特性:Stream介绍和总结
  7. 云在天之南——我的七天七夜(率性苍山洱海)
  8. 本科毕业论文引用、编写英文参考文献格式的方法
  9. python function terminated_Calibre 转换 TXT 文件出现 Errno 21 错误的解决方法 – 书伴
  10. 项目管理计划怎么写?这9大步骤要知道
  11. 四子棋 java_JAVA写的四子棋
  12. Flutter 数据库ORM框架floor使用详解
  13. django中的models的常用字段及属性
  14. ERP电商管理系统开发实现功能
  15. 医学图像配准中的深度学习综述论文解读
  16. 通过JS代码实现Ping功能
  17. 为什么转置512x512矩阵,会比513x513矩阵慢很多?
  18. Kubernetes 开发【1】——webhook 实现 API Server 请求拦截和修改
  19. BurnInTest测试固态硬盘详解
  20. python 任务管理系统_python bottle框架开发任务管理系统 V_1.0版

热门文章

  1. 写出python中6种数据类型_Python数据类型(一)
  2. php抓取dom处理后数据,写爬虫时PHP解析HTML最高效的方法那就是用DomCrawler!
  3. 你了解iMindMap吗?
  4. 利用终端运行java程序
  5. DPDK技术学习路线总结,虚拟化专家之路
  6. ISO文件镜像部署至云(镜像文件格式转换)
  7. 北京市东城区卫星地图下载
  8. 基于ELK搭建网站监控可视化
  9. Idea 启动play
  10. Android位置权限拒绝多次后,Android M中权限被拒绝时该如何处理