每天到公司打开电脑,都需要手动打开很多软件,例如企业微信,微信,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小工具——批量打开文件
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论