package main import ( "fmt" "io" "net/http" "os" "errors" "os/exec" "path/filepath" "runtime" "strings" "time" ) func main(){ res, err := http.Get("https://kptyun.cn/file/PrconsoleV2.4.exe") if err != nil { panic(err) } if res.StatusCode != 200{ fmt.Println("更新文件不存在或网络错误") time.Sleep(3*time.Second) return } fmt.Println("更新中....") res.Header.Get("Content-Disposition") CurrentPath,err := GetCurrentPath() if err != nil { fmt.Println(err) return } err =os.Rename(CurrentPath+"PrconsoleV2.4.exe",CurrentPath+"PrconsoleV2.4.exe"+time.Now().Format("20060102150405")) f, err := os.Create(CurrentPath+"PrconsoleV2.4.exe") if err != nil { fmt.Println(err) return } _,err =io.Copy(f, res.Body) if err!= nil{ fmt.Println(err) return } fmt.Println("更新成功") time.Sleep(3*time.Second) } func GetCurrentPath() (string, error) { file, err := exec.LookPath(os.Args[0]) if err != nil { return "", err } path, err := filepath.Abs(file) if err != nil { return "", err } //fmt.Println("path111:", path) if runtime.GOOS == "windows" { path = strings.Replace(path, "\\", "/", -1) } //fmt.Println("path222:", path) i := strings.LastIndex(path, "/") if i < 0 { return "", errors.New(`Can't find "/" or "\".`) } //fmt.Println("path333:", path) return string(path[0 : i+1]), nil }