自己寫了一個服務叫做 Service1
因為有時候服務會自己突然停掉,想寫個批次檔可以判斷服務有沒啟動,如果沒有就啟動服務
我的code如下
for /f "delims=: tokens=2" %a in ('sc query ^| find "Service1"') do set _MYserver=%a
if not (%_MYserver%=="Service1") (net start Service1)
不過執行起來有問題...請問我哪邊寫錯需要調整的?
感謝各位前輩協助..我也覺得應該是要查為何服務會跳掉..
不過我有點不太理解是這支程式很簡單,而且之前run一段時間都沒問題..不知道為啥現在會一直跳掉...看LOG是 IO錯誤 還在努力尋找中
服務的部分code:
Protected Overrides Sub OnStart(ByVal args() As String)
' 在此加入啟動服務的程式碼,這個方法必須設定已啟動的
' 事項,否則可能導致服務無法工作。
FileSystemWatcher2.Path = "D:\RD\SWAPD00\TEST\OPENFILE\"
FileSystemWatcher2.IncludeSubdirectories = True
FileSystemWatcher2.Filter = "*.*"
FileSystemWatcher2.EnableRaisingEvents = True
End Sub
Private Sub FileSystemWatcher2_Create(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher2.Created
Shell("cmd.exe /c C:\FLOG\產生共用檔案使用表.lnk", vbNormalFocus)
End Sub
好像有找到原因了 我會定時執行一個批次 我發現執行後服務會停止,阿不過手動執行又不會......
確定是執行這個批次檔導致服務停止,但單獨執行又不會錯誤,目前先將此service設定重複啟動
@echo off
for /f "delims=: tokens=2" %%a in ('sc query ^| find "Service1"') do set _MYserver=%%a
if not ("%_MYserver%"=="Service1") (net start Service1)
這樣?
☟這個感覺比較好☟
@echo off
for /F "tokens=3 delims=: " %%H in ('sc query "Service1" ^| findstr " STATE"') do (
if /I "%%H" NEQ "RUNNING" (
net start Service1
)
)