可执行文件不在路径中 - GO

bra*_*ted 2 command-line go

我正在尝试为命令提示符调用内置命令,我遇到了我不明白的错误.

func main() {
    cmd := exec.Command("del", "C:\trial\now.txt")
// Reboot if needed
    cmd.Stdout = os.Stdout
    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

exec: "del": executable file not found in %PATH%
exit status 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Adr*_*ian 7

del它不是可执行文件,它是一个内置命令.exec.Command允许您分叉到另一个可执行文件.要使用shell命令,您必须调用shell可执行文件,并传入您想要执行的内置命令(和参数):

cmd := exec.Command("cmd.exe", "/C", "del C:\\trial\\now.txt")
Run Code Online (Sandbox Code Playgroud)

请注意,您还必须如上所述转义字符串中的反斜杠,或使用反引号引用的字符串:

cmd := exec.Command("cmd.exe", "/C", `del C:\trial\now.txt`)
Run Code Online (Sandbox Code Playgroud)

但是,如果您只想删除文件,最好使用os.Remove直接删除文件而不是分配给shell来执行此操作.