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

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 但它仍然失败 *


一只名叫tom的猫
浏览 161回答 1
1回答

红糖糍粑

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)     } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go