二重引用符などで面倒なことにならない cmd.exe の呼び方

環境変数を使おう。

func system(cmdline string) error {
    const CMDVAR = "CMDVAR"

    orgcmdarg := os.Getenv(CMDVAR)
    defer os.Setenv(CMDVAR, orgcmdarg)

    os.Setenv(CMDVAR, cmdline)

    cmd1 := exec.Command("cmd.exe", "/c", "%"+CMDVAR+"%")
    cmd1.Stdout = os.Stdout
    cmd1.Stderr = os.Stderr
    cmd1.Stdin = os.Stdin
    return cmd1.Run()
}