Jilan
Jilan

Reputation: 99

Execute the 'cd' command for CMD in Go

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

Answers (3)

Jason M.
Jason M.

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

David Conrad
David Conrad

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

Adrian
Adrian

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

Related Questions