標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

二重引用符などで面倒なことにならない 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()
}