You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言如何调用文本编辑器打开指定文件?

报错原因

exec.Command 第一个入参要求为可执行程序的路径,你直接传入了文本文件路径,系统将txt文件识别为可执行程序尝试运行,自然会抛出「不是有效的Win32应用」的错误。

修复方案

调用Notepad打开目标文件实现

直接将第一个参数改为记事本程序的启动名,待打开的文件作为第二个参数传入即可,示例代码如下:

filePath := "H:/code/txt_projects/hello6.txt"
// 传入可执行程序notepad.exe,第二个参数为待打开的文件路径
cmd := exec.Command("notepad.exe", filePath)
// 若不需要将记事本的输入输出绑定到当前终端,可删除以下三行配置
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

err = cmd.Start()
if err != nil {
    fmt.Printf("启动记事本失败: %s\n", err)
    return
}

// 若不需要等待用户关闭记事本再执行后续逻辑,可删除以下Wait相关代码
fmt.Printf("等待用户关闭记事本...\n")
err = cmd.Wait()
fmt.Printf("记事本运行结束,错误信息: %v\n", err)

可选:跨平台通用打开方案

如果你的CLI工具需要兼容多平台,不想绑定Notepad,也可以调用系统默认程序打开对应文件:

  • Windows:exec.Command("cmd.exe", "/c", "start", filePath)
  • macOS:exec.Command("open", filePath)
  • Linux:exec.Command("xdg-open", filePath)
原代码逻辑说明

你找到的这段代码的作用是启动指定可执行程序,将程序的标准输入、输出、错误流都绑定到当前终端,启动完成后阻塞等待程序运行结束再继续执行后续代码,本身逻辑没有问题,仅参数使用错误导致报错。

内容的提问来源于stack exchange,提问作者scottdomini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:45:04