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

Executable file not found in %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)
}

*大家好,每当我尝试 运行 这个文件时,它都会显示这个错误“cmd.Run: exec: “dir”: 在 %PATH% 中找不到可执行文件失败: ”。我的 PATH 中有 golang 但它仍然失败 *

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

cmd.exe /c dir

你可以这样实现:

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

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

像这样传递命令行参数,strings.Split() 会将“/c dir”拆分为所有由“”分隔的子字符串,returns th[=41 之间的子字符串片段=]e 分隔符。

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

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

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

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

进口( “os” “path/filepath” “字符串” )

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

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)
    }

}