Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何通过批处理文件脚本获取windows服务信息_Batch File_Command Line_Windows Services_Windows Server 2003 - Fatal编程技术网

Batch file 如何通过批处理文件脚本获取windows服务信息

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

首先是一个声明!我是批处理文件脚本编写的begginer! 我想获得有关win_server_2003中正在运行的win_服务的信息,并查看是谁启动了该服务,然后决定在service config sc中更改此值, 使用“sc qc serviceName”完成第一步并返回此结果:

    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中有效,但不适合在批处理文件中使用: