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,但它仍然失敗 *
uj5u.com熱心網友回復:
dir不是 Windows 中的可執行檔案,而是命令提示符的內部命令。您需要將 dir 傳遞給命令提示符。您的命令如下所示:
cmd.exe /c 目錄
你可以像這樣實作它:
args := strings.Split("/c 目錄","")
cmd := exec.Command("cmd.exe",args...)
像這樣傳遞您的命令列引數,strings.Split() 會將“/c dir”拆分為所有由“”分隔的子字串,并回傳這些分隔符之間的子字串片段。
此外,如果您需要列印特定位置的目錄,您可以設定命令的作業目錄:
cmd.Dir = filepath.Join("C:","Windows")
filepath.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: %s\n", err, err)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/453013.html
