elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch if i variables vectores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Batch if i variables vectores  (Leído 1,835 veces)
dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Batch if i variables vectores
« 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


En línea

dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Batch if i variables vectores
« Respuesta #1 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


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variables dentro de variables (batch)
Scripting
MK-Ultra 8 7,909 Último mensaje 6 Febrero 2008, 23:18 pm
por GUN$
Variables batch y vb
Programación Visual Basic
gdegrau 3 2,386 Último mensaje 27 Enero 2009, 20:03 pm
por krackwar
Contenedor de variables, vectores, deque map???
Programación C/C++
tonilogar 1 2,181 Último mensaje 23 Junio 2011, 19:02 pm
por Akai
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
Meine programmen 1 4,191 Último mensaje 24 Marzo 2012, 16:48 pm
por Eleкtro
Variables en BATCH « 1 2 »
Scripting
crazykenny 17 8,708 Último mensaje 26 Enero 2014, 11:10 am
por crazykenny
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines