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

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

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

Go
一只名叫tom的猫 2022-11-23 20:26:21

package main


import (

    "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贡献0条经验 获得超5个赞

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

添加回答

举报

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