为了账号安全,请及时绑定邮箱和手机立即绑定

在 %PATH% golang 中找不到可执行文件

在 %PATH% golang 中找不到可执行文件

Go
一只名叫tom的猫 2022-11-23 20:26:21
package mainimport (    "bytes"    "fmt"    //"log"    "os/exec")func main() {    cmd := exec.Command("dir")    var stdout, stderr bytes.Buffer    cmd.Stdout = &stdout    cmd.Stderr = &stderr    err := cmd.Run()    if err != nil {        fmt.Printf("cmd.Run: %s failed: %s\n", err, err)    }    outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes())    if len(errStr) > 1 {        fmt.Printf("out:\n%s\nerr:\n%s\n", outStr, errStr)    }    fmt.Printf(outStr)}*大家好,每当我尝试使用 go 运行此文件时,它都会显示此错误“cmd.Run:exec:“dir”:在 %PATH% 中找不到可执行文件失败:”。我的 PATH 中有 golang 但它仍然失败 *
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

dir在 Windows 中不是可执行文件,而是命令提示符的内部命令。您需要将 dir 传递给命令提示符。您的命令将如下所示:

cmd.exe /c 目录

你可以这样实现它:

args := strings.Split("/c dir"," ")

cmd := exec.Command("cmd.exe",args...)

像这样传递命令行参数,strings.Split() 会将“/c dir”拆分为所有由“”分隔的子字符串,并返回这些分隔符之间的一部分子字符串。

此外,如果您需要打印特定位置的目录,您可以设置命令的工作目录:

cmd.Dir = filepath.Join("C:","Windows")

filepath.Join 将任意数量的路径元素连接到一个路径中,用操作系统特定的分隔符将它们分开。

将以下包添加到您的文件中

导入(“操作系统”“路径/文件路径”“字符串”)

要打印结果,您可以将输出和错误连接到标准输出和标准错误。

cmd.Stdout = os.Stdout
cmd.Stderr = &os.Stderr

您的整体代码将是:

package main
import (  
  "fmt"
    "os"
    "os/exec"
    "path/filepath"
    "strings")func main() {
    args := strings.Split("/c dir"," ")
    cmd := exec.Command("cmd.exe",args...)

    cmd.Dir = filepath.Join("C:","Windows")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    err := cmd.Run()    if err != nil {
        fmt.Printf("cmd.Run: %s failed: %s\n", err, err)
    }

}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信