在%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: %sn", err, err)
}
outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes())
if len(errStr) > 1 {
fmt.Printf("out:n%snerr:n%sn", outStr, errStr)
}
fmt.Printf(outStr)
}

*嗨,伙计们,每当我试图用go运行这个文件时,它都会显示我这个错误";cmd。运行:exec:"dir":在%PATH%中找不到可执行文件失败:";。我的PATH中有golang,但它仍然失败*

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

cmd.exe/c目录

您可以这样实现:

args:=字符串。拆分("/c目录","(

cmd:=exec。命令("cmd.exe",args…(

像这样传递命令行参数,字符串。Split((将拆分"/c目录";分成由"0"分隔的所有子串"并返回那些分隔符之间的子串的切片。

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

cmd。Dir=文件路径。加入("C:"、"Windows"(

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

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

进口("os";"路径/文件路径";"字符串";)

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

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: %sn", err, err)
}
}

最新更新