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