Reputation: 99
I want to use Go and the exec library to go to a certain path, "c:", and run a .exe file.
When I run my Go code, it gives me:
exec: "cd:/": file does not exist
Upvotes: 4
Views: 12618
Reputation: 653
Depending if the command needs to operate in the "root" of the directory, you can use os.Chdir(dir)
to change Go programs directory. All of the subsequent commands and paths will then be relative to the value of the dir
provided to os.Chdir
.
Upvotes: 0
Reputation: 16359
The cd
command is a builtin of your shell, whether bash, cmd.exe, PowerShell, or otherwise. You would not exec a cd
command and then exec the program you want to run. Instead, you want to set the Dir
of the Cmd
you're going to run to the directory containing the program:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("program") // or whatever the program is
cmd.Dir = "C:/usr/bin" // or whatever directory it's in
out, err := cmd.Output()
if err != nil {
log.Fatal(err)
} else {
fmt.Printf("%s", out);
}
}
See the Cmd documentation for more information. Alternatively, you could use os/Chdir to change the working directory before running the program.
Upvotes: 12
Reputation: 46433
You specify the initial working directory to run the command in the Cmd
object:
cmd.Dir = "C:\\"
See the documentation on the Cmd struct for more details.
Upvotes: 3