golang小工具——批量打开文件

admin 2024年4月9日16:06:16评论6 views字数 1131阅读3分46秒阅读模式

每天到公司打开电脑,都需要手动打开很多软件,例如企业微信,微信,edge 浏览器等等,于是想能不能通过代码解决这个问题,便有了这篇文章。

起初想通过添加启动项解决,这确实是一个更方便的方案,但是如果非工作日的情况可能就不太适用,还是想通过实际的场景来提高一下代码能力。

首先是直接打开一个软件,例如 edge 浏览器,代码如下:

package main  

import (  
  "fmt"  
  "os/exec")  

func main() {  
  cmd := exec.Command("cmd", "/c", "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe")  
  err := cmd.Start()  
  if err != nil {  
      fmt.Println(err)  
      return  
  }  
}

这里可以使用 cmd.Start(),也可以用 cmd.Run(),区别在于 Run()会等待命令执行完成,造成阻塞,而 Start()会在后台启动一个新的进程,然后立即返回,允许执行后续的代码。

将错误处理放到一个函数中:

func check(e error) {  
  if e != nil {  
      panic(e)  
  }  
}

最后加上多线程,代码如下:

package main  

import (  
  "os/exec"  
  "sync")  

var files = []string{  
  "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",  
  "D:/WXWork/WXWork.exe",  
  "D:/WeChat/WeChat.exe",  
}  

func check(e error) {  
  if e != nil {  
      panic(e)  
  }  
}  

func openFile(command string, wg *sync.WaitGroup) {  
  defer wg.Done()  
  cmd := exec.Command("cmd", "/c", command)  
  err := cmd.Start()  
  check(err)  
  cmd.Wait()  
}  

func main() {  
  var wg sync.WaitGroup  
  for _, file := range files {  
      wg.Add(1)  
      go openFile(file, &wg)  
  }  
  wg.Wait()  
}

在 string 数组 files 中存储了要打开的文件位置,通过 cmd /c 打开文件,结合 waitgroup 实现了多线程。

最后 go build 编译成 exe 文件放到桌面,打开即可。

原文始发于微信公众号(Crush Sec):golang小工具——批量打开文件

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月9日16:06:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   golang小工具——批量打开文件https://cn-sec.com/archives/2640098.html

发表评论

匿名网友 填写信息