How to receive a processes that with name via a batch script

54 Views Asked by At

I need to receive a string with processes whose name is equal to "MSSQLSERVER" or starts with "MSSQL$". The names should be separated by forward slashes (/). I am trying to do it with such script:

@echo off
set mssqlDependenties=
set defaultSqlServerServiceName="MSSQLSERVER"
set namedSqlServerServiceNameBeginning="MSSQL$"

setlocal enabledelayedexpansion
for /f "tokens=2" %%s in ('sc query state^= all ^| find "SERVICE_NAME: MSSQL"') do (
    set serviceName=%%s
    if "%%s" equ %defaultSqlServerServiceName% (
        set mssqlDependenties=!mssqlDependenties!/%%s
    )   
    if "%serviceName:~0,7%" equ %namedSqlServerServiceNameBeginning% (
        set mssqlDependenties=!mssqlDependenties!/%%s
    )
)

echo %mssqlDependenties%

But I receive an error:

The syntax of the command is incorrect.

mssqlDependenties should contain MSSQLSERVER/MSSQL$1/MSSQL$2/MSSQL$3, etc.

1

There are 1 best solutions below

0
Sheinar On

The solution from avery_larry works perfectly: I changed

 if "%serviceName:~0,7%" equ %namedSqlServerServiceNameBeginning% (

to

if "!serviceName:~0,7!" equ %namedSqlServerServiceNameBeginning% (