批處理有如下特點:
1、登錄到當前窗口運行時,如果關閉控制台會連同啟動的程序一起關閉。
2、如果是以start /b的形式啟動,那么同樣也是在控制台關閉后者注銷當前窗口也會一起關閉。
3、如果以vbs的形式啟動,注銷當前用戶也會一起關閉。
有如下方式解決:
1、使用【任務計划】去啟動批處理,里面有很多個觸發點,可以選擇【計算機啟動時】觸發也能達到開機啟動的效果,而不用登錄桌面。
2、有錯誤啟動Windows Service方式,用【sc】命令注冊服務,然后以cmd.exe的形式去啟動(C:\Windows\System32\cmd.exe /C C:\Python34\Scripts\shadowsocks\shadowsocks\run.bat),但這種形式表面上是啟動不成功服務,但是實質上在進程上已經有了python.exe這個進程存在,所以是成功啟動的;而且這種形式是不能停止或重啟這個服務。
3、使用【Bat_To_Exe_Converter】這個軟件將bat轉換成exe程序,然后用【sc】或者【srvinstw.exe】把這個exe注冊進服務,如果是python的程序同樣會面臨第2步的問題,但是如果你啟動的是別的,很可能會成功;還有一個問題,這個轉換的程序在執行轉換后的exe時會在臨時文件夾下產生一個【b2e.exe】的進程,我猜測這個是執行bat的基礎,但是里面具體干了什么不得而知,如果想使用,請慎重!
下載地址:http://www.jb51.net/article/20270.htm
4、終極解決方法,使用nssm程序
ssm install <servicename>
然后在服務列表即可啟動,這個程序對bat注冊成服務非常不錯,比上面三種方式靠譜。
參考:
http://stackoverflow.com/questions/415409/run-batch-file-as-a-windows-service