Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: dracrac en 30 Noviembre 2016, 22:06 pm



Título: Batch if i variables vectores
Publicado por: dracrac en 30 Noviembre 2016, 22:06 pm
Saludos,

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


Título: Re: Batch if i variables vectores
Publicado por: dracrac en 2 Diciembre 2016, 10:53 am
Hola de nuevo

A ver he solucionado uno de los errores, al parecer cuando cogia las variables del archivo me lo cogia con espacios en blanco y por eso no funcionaba correctamente si edito el archivo y lo pongo de este modo esto ya funciona:

--prueba.txt--------------
CscService:A:         
dps:AD:           
fdrespub:M:         
iphlpsvc:D:
------------------------------

Lo que no acaba de funcionar es que si consulto que es lo que guardo en los vectores me sale en blanco:

Código:
echo nombre_vec:!%srvname%[%contf%]!
echo estado_vec:!%srvestado%[%contf%]!

Alguien sabe que falla? Gracias