大家好,我是Golang語言社區主編彬哥,這篇給大家帶來關于Go語言操作cmd命令執行windows平臺的相關操作
~~~
1 關機、重啟:
// 關閉計算機
func ShutDownEXE() {
fmt.Println("關閉主機")
arg := []string{"-s", "-t", "20"}
cmd := exec.Command("shutdown", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
// 重啟計算機
func ReShutDownEXE() {
fmt.Println("重啟主機")
arg := []string{"-r", "-t", "20"}
cmd := exec.Command("shutdown", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
2 根據進程名字kill進程:
// kill調進程 參數---taskkill /im notepad.exe /T /F
// 參數說明:strGameName為需要kill的進程的名字
func KillEXE(strGameName string) bool {
fmt.Println("kill調進程游戲:", strGameName)
strGameName = strGameName + ".exe"
arg := []string{"/im", strGameName}
cmd := exec.Command("taskkill", arg...)
if err := cmd.Run(); err != nil {
fmt.Println("Error: ", err)
}
return true
}
~~~
~~~
3 操作注冊表,實現程序開機啟動
//假如你要運行的程序名字為:"autorun.exe"使用命令為
//"reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f"
//(不包括引號)其中"C:\autorun.exe"為目標程序的路徑.按著這樣的命令就可以將你的程序添加到啟動項中了
// RunEXE 參數---reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f
func RunEXE() {
fmt.Println("開機啟動")
strEXEName = "C:\\Windows\\System32\\auto.vbs" // 需要啟動文件的路徑文件
arg := []string{"add", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "/v", "auto", "/t", "REG_SZ", "/d", strEXEName, "/f"}
cmd := exec.Command("reg", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
4 實現啟動執行程序隱藏進程(auto.bat文件就不給大家展示了,網上可以找到)
// 隱藏調進程 參數---start /b notepad.exe
func YinCangEXE(strEXEName string) {
fmt.Println("隱藏進程")
cmd := exec.Command("auto.bat")
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
5 啟動執行文件
// 啟動exe
// 參數 strGameName 啟動的執行文件的名字;strIPandPort 傳遞給exe的參數
func CallEXE(strGameName string, strIPandPort string) {
fmt.Println("CallEXE 開始啟動游戲")
arg := []string{strGameName, strIPandPort}
fmt.Println("------------", arg)
strPath := getCurrentPath()
strPath = strPath + "\\TSTX\\" + strGameName // 路徑
cmd := exec.Command(strPath, arg...)
if err := cmd.Run(); err != nil {
fmt.Println("Error: ", err)
return
}
return
}
// 獲取當前目錄
func getCurrentPath() string {
s, _ := exec.LookPath(os.Args[0])
i := strings.LastIndex(s, "\\")
path := string(s[0 : i+1])
PathData = path
return path
}
~~~
最后總結,技術是一把雙刃劍,一定要用到對人類有意義的方面

- Go語言基礎篇
- Go語言簡介
- Go語言教程
- Go語言環境安裝
- Go語言結構
- Go語言基礎語法
- Go語言數據類型
- Go語言變量
- Go語言提高篇
- Go語言實現貪吃蛇
- Go 諺語
- 解決連通性問題的四種算法
- golang 幾種字符串的連接方式
- Go JSON 技巧
- Go += 包版本
- Golang 編譯成 DLL 文件
- Go指南:牛頓法開方
- Go語言異步服務器框架原理和實現
- Golang適合高并發場景的原因分析
- 如何設計并實現一個線程安全的 Map ?(上篇)
- go語言執行cmd命令關機、重啟等
- IT雜項
- IT 工程師的自我管理
- IT界不為人知的14個狗血故事
- Go語言版本說明
- Go 1.10中值得關注的幾個變化
- Golang面試題解析
- Golang面試題
- Golang語言web開發
- golang 模板(template)的常用基本語法
- go語言快速入門:template模板
- Go Template學習筆記
- LollipopGo框架
- 框架簡介
- Golang語言版本設計模式
- 設計模式-單例模式
- Golang語言資源下載
- 公眾賬號
- leaf
- 合作講師
- 公開課目錄