自动执行命令、window弹窗(golang练手小项目)

2023-05-16

背景:
每天工作早上开始工作第一件事就是重启电脑,再重启电脑后需要打开很多的软件、还要拉代码。所以我就像用golang写一个项目。可以再重启后帮助我启动软件拉去代码。
首先是
1、提示框功能
描述读取txt中的配置,在windows中弹提示
1)读取文件

/*得到txt文件内的内容*/
func GetFileString(path string) []string {
	var fileText string
	file, err := os.Open(path)
	if err != nil {
		println("文件读取错误。请确认文件夹路径是否正确!")
		println("失败提示err=", err)
	}
	defer file.Close()
	reader := bufio.NewReader(file)
	for {
		readString, err := reader.ReadString('\n')
		if len(fileText) > 1 {
			fileText = fileText + "&|&|&|"
		}
		fileText = fileText + readString
		if err == io.EOF {
			break
		}
	}
	return strings.Split(fileText, "&|&|&|")
}

2)将配置文件中信息组装成一个提示框的信息,当然还要定义一个结构体

/*提示框数据*/
type hintDate struct {
	hintText    string
	filePath    string
	buttonsStr  []string
	buttonsPath []string
}
/*读取需要提示的内容*/
func readHintFile(path string) []hintDate {
	//得到文件内容
	ontHintText := aiutil.GetFileString(path)
	hintDates := make([]hintDate, len(ontHintText))
	for i := range hintDates {
		splitText := strings.Split(ontHintText[i], "|||")
		mind := len(splitText) / 2
		hintDates[i] = hintDate{
			hintText:    splitText[0],
			filePath:    path,
			buttonsStr:  splitText[1 : mind+1],
			buttonsPath: splitText[mind+1:],
		}
	}
	return hintDates

}

3、弹出提示框

/*一个弹框*/
func PopupWindow(title string, message string, buttons []string, buttonsPath []string) {
	setButtons := make([]toast.Action, len(buttons))
	for i := range buttons {
		setButtons[i] = toast.Action{"action", buttons[i], buttonsPath[i]}
	}

	notification := toast.Notification{
		AppID:   "Microsoft.Windows.Shell.RunDialog",
		Title:   title,
		Message: message,
		Icon:    "D:\\AiAssistant\\picture\\hint.png", // 文件必须存在
		Actions: setButtons,
	}
	err := notification.Push()
	if err != nil {
		log.Fatalln(err)
	}
}

第二个功能执行cmd命令
描述:根据配置文件在指定目录下执行命令
主要代码:


type aiCommand struct {
	path    string//路径
	command string//命令
	param   string//命令参数
}
//执行配置的命令
func doCommand(commands []aiCommand) {
	for x := range commands {

		command := commands[x]
		if command.path == "" {
			continue
		}
		cmd := exec.Command(command.command, command.param)
		cmd.Dir = command.path
		println("默认路径:", cmd.Dir, ",执行命令:", command.command)
		output, err := cmd.CombinedOutput()
		if err != nil {
			fmt.Println("执行命令失败:", err)
			return
		}
		println("命令输出:", output)
	}
}

第三个功能自动打开软件
目前还没有实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动执行命令、window弹窗(golang练手小项目) 的相关文章

随机推荐

  • 虚拟化技术问题

    1 xff0c 做虚拟化多久 xff1f 虚拟化用自己话概述下 xff1f 虚拟化概念 xff1a virtualization 资源管理 xff0c 是把X个物理资源 gt Y个逻辑资源 xff0c 虚拟化实现的程度 xff1a 完全 部
  • VMware ESXi 安装教程

    一 VMware ESXI7 0版本的安装与配置 xff08 一 xff09 概述 VMware vSphere是VMware公司推出的服务器虚拟化解决方案 xff0c 包含两个重量级的产品 xff1a VMware ESXI和VMware
  • 云计算(虚拟化)面试宝典

    一 xff1a 服务器虚拟化 1 名词解释 xff08 1 xff09 资源动态调整 xff08 对象是虚拟机 xff09 管理员操作 xff0c 对CPU 内存 网卡 硬盘 GPU进行调整 FusionCompute支持虚拟机资源动态调整
  • 存储技术知识分享

    存储的定义 狭义的存储定义是指具体的某种设备 xff0c 比如以前的软盘 CD 以及 DVD 和硬盘 xff0c 对于企业可能还会用到磁带 广义上存储都是指数据中心里面使用的存储设备 xff0c 这里面包含了存储硬件系统 软件 系统 存储网
  • CentOS7搭建Oralce 19C单实例 静默安装详细文档

    一 硬件环境检测 xff1a 硬件需求 内存 xff1a 6G 43 grep MemTotal proc meminfo 交换分区 xff1a 等于内存值或内存值的两倍 grep SwapTotal proc meminfo 存储 xff
  • Oracle19c数据库安装完成后,创建表空间、授权用户等sql

    一 查询数据库状态 实例名 库名 SID 数据文件存放目录 监听程序正常的提示 第一步 切到 oracle 用户下 su oracle 第二步 查看监听状态 lsnrctl status 第三步 查询 oracle ecology dbca
  • Oracle数据库修改库名(db_name)和实例名

    假设原来的数据库名为db01 要改成ecology 原实例名 service name instance name oralce 要改成ecology 1 查看当前数据库的db name和instance name 先用su oracle命
  • mysql8.0用rpm安装包在Centos7上部署

    一 准备工作 在官网下载rpm安装包 systemctl stop mariadb rm rf etc my cnf rm rf var lib mysql rpm e nodeps mariadb server mariadb yum y
  • 深信服超融合平台管理页面

    深信服云管理平台提供的虚拟化资源池功能 xff0c 使IT部门能够将IT物理资源 xff0c 抽象成按需提供的弹性虚拟资源池包括云主机 存储 网络 网络安全 xff0c 以消费单元 xff08 即租户或虚拟数据中心 xff09 的形式对外提
  • HCIE-Routing & Switching V3.0模拟试题.docx

    1 单选 如果有一个运行802 1D生成树协议的局域网 那么在这个网络中的交换机会从根交换机收到哪些参数信息 A Maxage nbsp B Forward delay nbsp C Root Cost nbsp D 以上选项都正确 2 单
  • 华擎、映泰主板的网络唤醒(WOL)实例

    需要准备 xff1a 1 主板 2 LAN网络 3 AMD出品的Magic Packet唤醒软件 操作 xff1a 1 华擎主板操作 xff1a 进入高级 ACPI目录 xff0c 将PCI设备唤醒打开 xff0c 进入启动选项 xff0c
  • rlwrap安装配置,sql命令回退、上下翻

    安装与配置 1 yum安装readline依赖包 yum install y readline 注意 需要提前好配置yum源 2 解压rlwrap安装包 tar xvf rlwrap 0 42 tar gz
  • ftp服务,匿名能下载,账户访问能上传,但不能修改

    某学校为了方便于师生员工的教学 xff0c 计划搭建FTP服务器 xff0c 对所有互联网用户开放共享目录 xff0c 提供相关学习资料的下载 xff0c 但是禁止上传 xff0c 学校内部的教师能有使用FTP服务器进行上传下载 xff0c
  • Gazebo进行视角调整

    最简单粗暴的方式 xff1a 摁住滚轮移动鼠标 xff01 也可以通过下面这种方式 xff1a 右上角的橘黄色图标 xff0c 点击可以进行视角切换
  • 服务器几核够用?

    除了以上对应关系 xff0c 还有一个关键要素 那就是并发量 就算你是个人博客平均并发每秒100用户的话用1核心肯定也是不够的 处理器会处理不过来的 按照宝塔官方给的建议 1核2G xff1a 30并发 2核4G xff1a 80并发 4核
  • matlab 数学建模 最常用的主成分分析 输出得分排名

    主成分分析和层次分析法应该是建模比赛中最常用的几个方法之一了 下面的代码我没记错应该是摘自司守奎老师的建模书 xff0c 然后加上的注释 matlab程序 clc clear sj 61 xlsread 39 20 xlsx 39 39 S
  • 数据结构与算法(python):图

    文章目录 1 定义2 图的存储3 图的遍历3 1 深度优先遍历3 2 广度优先遍历 1 定义 图的构成 xff1a 顶点和边 无向边 xff1a 顶点 V i V i V i
  • python 三色球问题

    2 三色球问题 有红 黄 蓝三种颜色的求 xff0c 其中红球 3 个 xff0c 黄球 3 个 xff0c 绿球 6 个 先将这 12 个球混合放在一个盒子中 xff0c 从中任意摸出 8 个球 xff0c 编程计算摸出球的各种颜色搭配
  • 各类远程工具对比

    各类远程工具对比 windows上自带远程桌面和远程协助 xff0c linux上基本标配SSH xff0c 当我们需要跨平台远程时 xff0c 可能就需要其他工具了 常用的工具如下 xff1a 工具名称支持平台官网特点优点缺点ToDesk
  • 自动执行命令、window弹窗(golang练手小项目)

    背景 xff1a 每天工作早上开始工作第一件事就是重启电脑 xff0c 再重启电脑后需要打开很多的软件 还要拉代码 所以我就像用golang写一个项目 可以再重启后帮助我启动软件拉去代码 首先是 1 提示框功能 描述读取txt中的配置 xf