Batch file 如何通过批处理文件脚本获取windows服务信息
首先是一个声明!我是批处理文件脚本编写的begginer! 我想获得有关win_server_2003中正在运行的win_服务的信息,并查看是谁启动了该服务,然后决定在service config sc中更改此值, 使用“sc qc serviceName”完成第一步并返回此结果:Batch file 如何通过批处理文件脚本获取windows服务信息,batch-file,command-line,windows-services,windows-server-2003,Batch File,Command Line,Windows Services,Windows Server 2003,首先是一个声明!我是批处理文件脚本编写的begginer! 我想获得有关win_server_2003中正在运行的win_服务的信息,并查看是谁启动了该服务,然后决定在service config sc中更改此值, 使用“sc qc serviceName”完成第一步并返回此结果: SERVICE_NAME: W3SVC TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_S
SERVICE_NAME: W3SVC
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k iissvcs
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : World Wide Web Publishing Service
DEPENDENCIES : WAS
: HTTP
SERVICE_START_NAME : **LocalSystem**
现在我想在一个变量中设置这个标记值并检查它,然后继续这个故事。。。
我已达到此代码,但无法检查数组值,然后更改服务信息:
@echo off
setlocal EnableDelayedExpansion
set n=0
rem for set result in a array
for /f "delims=" %%a in ('sc qc service name') do (
set /A n+=1
set returnVal[!n!]=%%a
)
rem To show all non-empty lines:
for /F %%i in (1,1,%n%) do echo !returnVal[%%i]!
rem Or:
echo started by : %returnVal[!n!]%
。
.
.
谢谢你的帮助
set "serviceName=dhcp"
set "searchAccount=LocalSystem"
set "replaceAccount=........."
set "password=..........."
sc qc "%serviceName%" ^| find "SERVICE_START_NAME : %searchAccount%" >nul 2>nul
if not errorlevel 1 (
echo sc config %serviceName% obj= %replaceAccount% password= %password%
)
配置、测试控制台的输出是否正确,删除echo命令。第1部分
for /f "tokens=1*delims==" %a in ('wmic service where "name='W3SVC'" get startname /value') do @for /f "delims=" %c in ("%~b") do @echo "%~c"
第二部分
wmic service where "name='W3SVC'" set startname="NSA FLIGHT COMMANDER"
请注意:第2部分可能不起作用,因为service.property可能是只读的。我是否理解您只对最后一行感兴趣?那么sc qc serviceName |查找服务_开始_名称如何?所有结果都保存在一个数组中,由first for!我想检查数组值的最后一行最后一个索引,SERVICE\u START\u NAMEtanx ur命令工作正常,返回->SERVICE\u START\u NAME:LocalSystem**您知道如何检查此值吗??并根据此值更改服务信息??TAnx for ur reply,这在cmd中有效,但不适合在批处理文件中使用: