main.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "os/exec"
  6. "time"
  7. )
  8. // go build -ldflags -H=windowsgui main.go
  9. func main() {
  10. dir := getPwd()
  11. configService := fmt.Sprintf("%s\\%s\\%s", dir, "nats-bus", "config-server.exe")
  12. copterService := fmt.Sprintf("%s\\%s", dir, "copter-train.exe")
  13. // 对应应用的路径
  14. fmt.Println(configService)
  15. fmt.Println(copterService)
  16. // 先关闭应用
  17. appNames := []string{"config-server.exe", "copter-train.exe"}
  18. for _, name := range appNames {
  19. err := killProcess(name)
  20. if err != nil {
  21. fmt.Printf("Error: %v\n", err)
  22. }
  23. }
  24. // 启动config-server
  25. cmd := exec.Command(configService)
  26. err := cmd.Start()
  27. if err != nil {
  28. fmt.Printf("Error: %v\n", err)
  29. return
  30. }
  31. // 等待config-server启动
  32. time.Sleep(3 * time.Second)
  33. // 启动copter-train
  34. cmd1 := exec.Command(copterService)
  35. err1 := cmd1.Start()
  36. if err1 != nil {
  37. fmt.Printf("Error: %v\n", err1)
  38. }
  39. }
  40. // func startApp(app string) error {
  41. // cmd := exec.Command(app)
  42. // err := cmd.Start()
  43. // if err != nil {
  44. // return err
  45. // }
  46. // return nil
  47. // }
  48. func getPwd() string {
  49. dir, err := os.Getwd()
  50. if err != nil {
  51. fmt.Println("Error:", err)
  52. return ""
  53. }
  54. fmt.Println("Current directory:", dir)
  55. return dir
  56. }
  57. func killProcess(name string) error {
  58. cmd := exec.Command("taskkill", "/IM", name, "/F")
  59. err := cmd.Run()
  60. if err != nil {
  61. return fmt.Errorf("failed to kill process %s: %w", name, err)
  62. }
  63. return nil
  64. }