Me gustaria saber porque no funciona este codigo. Cuento lo que hace:
Dado el archivo prueba.txt que contiene una serie de servicios con su respectivo estado(abreviado) este es el formato:
--prueba.txt--------------
CscService:A
dps:AD
fdrespub:M
iphlpsvc:D
------------------------------
El codigo lee el archivo convierte el estado abreviado de los servicios y lo guarda en en 2 vectores.
Código:
@echo off
color 0B
mode 120
setlocal EnableDelayedExpansion
set archivo=prueba.txt
echo archivo:%archivo%
echo.
if not exist %archivo% echo No existe
REM Leer archivo
set contf=0
for /f "tokens=1,2 delims=:" %%n in (%archivo%) do (
echo nombre:%%n
echo estado:%%o
REM Assignar estado a cada servicio
if %%o==A (set "estado=auto")
if %%o==D (set "estado=disabled")
if %%o==M (set "estado=demand")
if %%o==AD (set "estado=delayed-auto")
rem echo.
for /f "tokens=2,*" %%a in ('sc GetDisplayName %%n ^| findstr "Display"') do (set dp=%%b)
for /f "tokens=2,*" %%a in ('sc GetDisplayName %%n ^| findstr "Nombre"') do (set nm=%%b)
rem echo dp:!dp!
rem echo nm:!nm!
if !dp! == CORRECTO (
setlocal EnableDelayedExpansion
set /a contf+=1
set %srvname%[!contf!]=%%n
set %srvestado%[!contf!]=%estado%
echo srvname[!contf!]:%%n
echo srvestado[!contf!]:%estado%
echo nombre_vec:!%srvname%[%contf%]!
echo estado_vec:!%srvestado%[%contf%]!
echo.
)
pause
echo.
)
pause
El problema esta que no me transforma bien el estado de cada servicio:
Código:
REM Assignar estado a cada servicio
if %%o==A (set "estado=auto")
if %%o==D (set "estado=disabled")
if %%o==M (set "estado=demand")
if %%o==AD (set "estado=delayed-auto")
y tampoco sale nada cuando visualizo el contenido de los vectores:
Código:
echo srvname[!contf!]:%%n
echo srvestado[!contf!]:%estado%
echo nombre_vec:!%srvname%[%contf%]!
echo estado_vec:!%srvestado%[%contf%]!
Alguien me podria ayudar a ver que falla? Gracias