|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 | 
| 『楼 主』:
 紧急求助:如何实现无人干预自动备份系统服务
 
使用 LLM 解释/回答一下 
 
 
这是我编写的一个备份系统服务的批处理程序,可成功备份系统服务的状态和启动类型现有两个问题不能解决:
 1、程序运行是为何中途会有停顿,必须键盘按键才能继续运行???
 2、如何实现显示状态为START的系统服务的个数???我在第二行末尾加了SET /A NUM1=%NUM1%+1也没有没有起作用,最后NUM1变量的值还是1,为什么会没有参加循环计算??请各位高手指点!!!备份系统服务.BAT
 
 sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >tmpsrv.txt
 
 for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do sc query %%j|findstr STATE>tmpstype.txt && for /f "tokens=3 delims=: " %%s in (tmpstype.txt) do if "%%s"=="RUNNING" @echo sc start %%j>>恢复系统服务列表.bat
 
 for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do sc query %%j|findstr STATE>tmpstype.txt && for /f "tokens=3 delims=: " %%s in (tmpstype.txt) do if not "%%s"=="RUNNING" @echo sc stop %%j>>恢复系统服务列表.bat
 
 for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do @( sc qc %%j |findstr  START_TYPE >tmpstype.txt &&  for /f "tokens=4 delims=:_ " %%s in (tmpstype.txt) do echo sc config  %%j start= %%s >>"恢复系统服务列表.bat")
 
 del /q tmpstype.txt
 del /q tmpsrv.txt
 ren "恢复系统服务列表.bat" "恢复系统服务列表(%date%).bat"
 
 Last edited by livesweet on 2007-7-28 at 12:27 PM ]
 
 
 
 
 |  | 
|  2007-7-28 04:39 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 |  | 
|  2007-7-28 11:19 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
::服务状态列表 By Slore@echo off&setlocal EnableDelayedExpansion
 sc query type= service state= all| findstr /r "SERVICE_NAME: STATE">tmpsrv.txt
 Set flags=0
 for /f "tokens=1,2,3,4" %%i in (tmpsrv.txt) do (
 if !flags!==0 (Set flags=1&&Set SN=%%i%%j) else Set flags=0&&echo !SN! %%i:%%k %%l
 )
 ::可以自己修改不要SERVICE_NAME: STATE,对应的是tokens的1即%%i
 pause
 
 
 
 
 |  | 
|  2007-7-28 11:54 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 | 
| 『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by slore at 2007-7-28 11:54 AM:::服务状态列表 By Slore
 @echo off&setlocal EnableDelayedExpansion
 sc query type= service state= all| findstr /r "SERVICE_NAME: STATE">tmpsrv.txt
 Set flags=0
 for /f " ...
 
这个还是计算不了当前正在运行的系统服务的个数 
 
 
 
 |  | 
|  2007-7-28 12:28 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
晕~有了这个那个还不容易?
 findstr过滤出RUNNING的。。然后统计行数就好了
 
 ::服务状态列表 By Slore
 @echo off&setlocal EnableDelayedExpansion
 sc query type= service state= all| findstr /r "SERVICE_NAME: STATE">tmpsrv.txt
 Set flags=0
 for /f "tokens=1,2,3,4" %%i in (tmpsrv.txt) do (
 if !flags!==0 (Set flags=1&&Set SN=%%i%%j) else Set flags=0&&echo !SN! %%i:%%k %%
 
 l>>tmpsrv1.txt
 )
 ::可以自己修改不要SERVICE_NAME: STATE,对应的是tokens的1即%%i
 
 findstr/C:"RUNNING" tmpsrv1.txt>tmpsrv.txt
 for /f %%i in (tmpsrv.txt) do Set /a flags+=1
 echo RUNNING中的服务有%flags%个
 
 pause>nul
 del tmpsrv.txt
 del tmpsrv1.txt
 
 
 
 
 
 
 |  | 
|  2007-7-28 12:45 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by slore at 2007-7-28 12:45 PM:晕~有了这个那个还不容易?
 
 findstr过滤出RUNNING的。。然后统计行数就好了
 
 ::服务状态列表 By Slore
 @echo off&setlocal EnableDelayedExpansion
 sc query type=  ...
 
很感激slore,我是老菜来的,现在问题已经解决!是早上我按照你的方法操作时漏了一个符号没写!!
但是第一个问题为何这样???百思不得其解??? 
 Last edited by livesweet on 2007-7-28 at 01:55 PM ] 
 
 
 
 |  | 
|  2007-7-28 13:52 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
你的P我运行正常,就是调用SC的次数太多……很慢。。我这个主要是对文本用FOR一次处理好个清单,然后这个清单,有服务名,有启动模式,有运行状态。
 所以用findstr筛选你想要的信息就很方便了。
 
 
 
 
 |  | 
|  2007-7-28 14:04 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 |  | 
|  2007-7-28 23:15 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
还有个问题啊!!要查看系统服务的启动类型即START_TYPE好像只能用SC QC命令逐个服务查询???是不是这样的??如果这样要花很多时间的!!!有没有一次可以枚举所有服务启动类型的命令????
 
 
 
 
 |  | 
|  2007-7-29 11:36 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Set objFSO = CreateObject( "Scripting.FileSystemObject ") Set
 objFile = objFSO.CreateTextFile( "Services.txt ") 
 
 strComputer = ". "
Set objWMIService = GetObject( "winmgmts:\\ " & strComputer & "\root\cimv2 ") Set
 colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_Service ") For Each
 objItem In colItems 
    OutStr = OutStr & objItem.Name & " "& objItem.StartMode & " " & objItem.State & vbCrLf Next
 
 objFile.Write OutStr 
objFile.Close 
 Set
 objWMIService = Nothing Set
 colItems = Nothing Set
 objFile = Nothing Set
 objFSO = Nothing 
这个可以得到格式:
 Alerter Disabled Stopped
 ALG Manual Running
 AppMgmt Manual Stopped
 AudioSrv Auto Running
 BITS Manual Stopped
 Browser Auto Stopped
 CiSvc Manual Stopped
 ClipSrv Disabled Stopped
 COMSysApp Manual Stopped
 CryptSvc Auto Running
 DcomLaunch Auto Running
 Dhcp Auto Running
 dmadmin Manual Stopped
 dmserver Auto Running
 Dnscache Auto Running
 ERSvc Disabled Stopped
 Eventlog Auto Running
 EventSystem Manual Running
 FastUserSwitchingCompatibility Manual Running
 helpsvc Auto Running
 HidServ Disabled Stopped
 HTTPFilter Manual Stopped
 ImapiService Manual Stopped
 lanmanserver Auto Running
 lanmanworkstation Auto Running
 LmHosts Auto Running
 Messenger Disabled Stopped
 mnmsrvc Manual Stopped
 MSDTC Disabled Stopped
 MSIServer Manual Stopped
 NetDDE Disabled Stopped
 NetDDEdsdm Disabled Stopped
 Netlogon Manual Stopped
 Netman Manual Running
 Nla Manual Running
 NtLmSsp Manual Stopped
 NtmsSvc Manual Stopped
 PlugPlay Auto Running
 PolicyAgent Auto Running
 ProtectedStorage Auto Running
 RasAuto Manual Stopped
 RasMan Manual Running
 RDSessMgr Manual Stopped
 RemoteAccess Disabled Stopped
 RemoteRegistry Disabled Stopped
 RfwProxySrv Manual Stopped
 RfwService Auto Running
 RpcLocator Manual Stopped
 RpcSs Auto Running
 RSVP Manual Stopped
 SamSs Auto Running
 SCardSvr Manual Stopped
 Schedule Auto Running
 seclogon Auto Running
 SENS Auto Running
 SharedAccess Auto Running
 ShellHWDetection Auto Running
 Spooler Disabled Stopped
 srservice Disabled Stopped
 SSDPSRV Manual Running
 stisvc Disabled Stopped
 SwPrv Manual Stopped
 SysmonLog Manual Stopped
 TapiSrv Manual Running
 TermService Manual Running
 Themes Auto Running
 TlntSvr Disabled Stopped
 TrkWks Auto Running
 UMWdf Disabled Stopped
 upnphost Manual Stopped
 UPS Manual Stopped
 VSS Manual Stopped
 W32Time Auto Running
 WebClient Auto Running
 winmgmt Auto Running
 WmdmPmSN Manual Stopped
 Wmi Manual Stopped
 WmiApSrv Manual Stopped
 wscsvc Disabled Stopped
 wuauserv Disabled Stopped
 WZCSVC Auto Running
 xmlprov Manual Stopped
 
 
如果你了解SQL语句的话可以直接过滤出你想要的某些条件服务…… 
 
 
 
 |  | 
|  2007-7-29 12:12 |  | 
|  | 
 
| terse 银牌会员
 
      
 
 
 
 积分 2404
 发帖 946
 注册 2005-9-8
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
发一个备份当前服务的P:@echo off
 rem  get current date and time
 for /f "tokens=1, 2, 3, 4 delims=-/. " %%j in ('Date /T') do set FILENAME=srv_%%j_%%k_%%l_%%m
 for /f "tokens=1, 2 delims=: " %%j in ('TIME /T') do set FILENAME=%FILENAME%_%%j_%%k.bat
 
 rem get all service name
 sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >tmpsrv.txt
 echo Save Service Start State In %FILENAME%
 rem save service start state into batch file
 rem
 
 echo @echo Restore The Service Start State Saved At %TIME% %DATE% >"%FILENAME%"
 echo @pause >>"%FILENAME%"
 
 for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do @( sc qc %%j |findstr  START_TYPE >tmpstype.txt &&  for /f "tokens=4 delims=:_ " %%s in ( tmpstype.txt) do @echo sc config  %%j start= %%s >>"%FILENAME%")
 echo @pause >>"%FILENAME%"
 
 del tmpsrv.txt
 del tmpstype.txt
 
 
 
 
 |  | 
|  2007-7-29 13:13 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 |  | 
|  2007-7-29 13:30 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 |  | 
|  2007-7-29 15:12 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
还有一种情况我想只是我机器的特殊情况为什么以上程序执行老,总是在这几个地方会停下了,必须按键才能继续运行,我作了截图,一共6个地方停下来,而且是关系到三个服务的,一个是显卡服务,一个是声卡服务,还有一个是多媒体的,为什么会停下来啊??能不能解决??
 
 Last edited by livesweet on 2007-7-29 at 11:25 PM ]
 
 
 
 
 
附件
1:  1.JPG (2007-7-29 23:22, 74.11 KiB,下载次数: 1) 
 
   
 |  | 
|  2007-7-29 23:22 |  | 
|  | 
 
| livesweet 初级用户
 
   
 
 
 
 积分 86
 发帖 45
 注册 2007-7-27
 状态 离线
 |  | 
|  2007-7-29 23:22 |  |