package mainimport ( "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% 中找不到可執行文件失?。骸薄N业?PATH 中有 golang 但它仍然失敗 *
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
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) } }
- 1 回答
- 0 關注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消