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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  problema al asignar variables dentro un bucle
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al asignar variables dentro un bucle  (Leído 2,744 veces)
wcordero

Desconectado Desconectado

Mensajes: 2


Ver Perfil
problema al asignar variables dentro un bucle
« en: 14 Agosto 2013, 23:46 pm »

amigos, hace mucho tiempo que vengo leyendo sus ayudas, y me han servido de mucho, ahora me toco a mi el problema, tengo el siguiente código:

Código
  1. reg query "HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL"|find /V "!" |find /V "HKEY_LOCAL_MACHINE" |find /V "MSSQLSERVER" |gawk '{print $1}'  > %TMP%\inst.log
  2.  
  3. type %TMP%\inst.log |find /v /c "" > %TMP%\CNT
  4. set /P CNT=<%TMP%\CNT
  5.  
  6. if %CNT% EQU 2 (
  7. osql -E -Q"select @@version" -o%TMP%\Est_Inst.inst
  8.  
  9. type %TMP%\Est_INst.inst |find /v /c "" > %TMP%\CNT
  10. set /P CNT=<%TMP%\CNT
  11. echo %CNT%
  12.  
  13. if %CNT% EQU 21 (echo NOOK %date%_%time% >> %TMP%\EST_INST.lg) ELSE (echo OK %date%_%time% >> %TMP%\EST_INST.lg)
  14.  
  15. ) ELSE (for /f %i in (%TMP%\inst.log) do (
  16. osql -E -S%SRV%\%i -Q"select @@version" -o%TMP%\Est_Inst.inst
  17.  
  18. type %TMP%\Est_INst.inst |find /v /c "" > %TMP%\CNT
  19. set /P CNT=<%TMP%\CNT
  20. echo %CNT%
  21.  
  22. if %CNT% NEQ 21 (echo NOOK %i >> %TMP%\EST_INST.lg) ELSE (echo OK >> %TMP%\EST_INST.lg)
  23. )
  24. )


el problema se me genera al momento de asignar los valores dentro del bucle, a pesar de que cuenta las líneas, no es capaz de pasarle el valor a la variable, por favor una mano, ya no se me ocurre nada =/


« Última modificación: 15 Agosto 2013, 00:53 am por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: problema al asignar variables dentro un bucle
« Respuesta #1 en: 15 Agosto 2013, 01:04 am »

Hola

Bienvenido al foro, pero haz el favor de leer mi firma para que el incumplimiento de la norma no se vuelve a repetir.

Sin probar el código, salta a simple vista un error: "for /f %i in", debes duplicar el número de porcentajes "%" en un script.

Por otro lado, dudo mucho que este comando de Linux te funcione bajo Windows: gawk '{print $1}', pues aunque estés usando un puerto del comando en Batch los argumentos se encierran usando comillas dobles, no comillas, y el parámetro "$1" no es nada en Batch, ah no ser que séa un parámetro especial del comando gawk... en fin, si a ti te funciona así, no hagas caso a este comentario.

PD: Como nota personal, debes usar la comillas dobles aquí para evitar futuros errores..."%TMP%\CNT", además podrías intentar ser un poco ordenado al escribir un código o simplemente utilizar la indentación, esto para que el código sea mínimamente legible para los que leamos tu duda.

Saludos!


« Última modificación: 15 Agosto 2013, 01:08 am por EleKtro H@cker » En línea

wcordero

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: problema al asignar variables dentro un bucle
« Respuesta #2 en: 19 Agosto 2013, 00:01 am »

gracias por responder, leere atentamente lo que me indicas, para no volver a cometer el error.

ahora respecto al código. hasta el momento no esta siendo "lanzado" desde un bat, sino que directamente sobre la cmd, es por eso que no tiene el doble %.

ahora respecto a los comando de Linux, revisa una aplicación llamada cygwin ya que en Windows no existe una forma fácil de poder hacerlo, y extraer un dato especifico, ya lo he ocupado antes y funciona.

respecto al orden, no veo la falta de orden, si puedieses darme un ejemplo de como ordenar de mejor manera el script antes entregado te lo agradecería para tenerlo y adoptarlo.

gracias!! =), pero aun no me queda claro como poder asignar el valor a la variable, probare lo que me indicas de las "" y les comento, gracias!! :D
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: problema al asignar variables dentro un bucle
« Respuesta #3 en: 19 Agosto 2013, 01:00 am »

Respecto al problema del code, parece que el valor se setea corréctamente en la variable, pero estás dentro de un IF, así que para solucionar lo del valor en la variable CNT (mostrar el contenido de la variablo y/o usar la variable) símplemente tienes que activar y usar la expansión de variables (SETLOCAL ENABLEDELAYEDEXPANSION), o en su defecto usar el comando CALL de esta manera:

Código
  1. Call Echo %%CNT%%





hasta el momento no esta siendo "lanzado" desde un bat, sino que directamente sobre la cmd, es por eso que no tiene el doble %.

Entonces no has sido lo suficientemente específico, deberías haber dicho que ejecutas las órdenes diréctamente en la CMD, y que además usas Cygwin.

ahora respecto a los comando de Linux, revisa una aplicación llamada cygwin

No necesitas usar cygwin, dispones de casi todos (sino todos) los comandos de Linux para Windows -> Gawk for Windows , sólo te lo digo como información por si quieres evitar depender de cygwin.

No sé que hace el susodicho comando "gawk", pero quizás esto te sirva como alternativa:  [BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto

respecto al orden, no veo la falta de orden, si puedieses darme un ejemplo de como ordenar de mejor manera el script antes entregado te lo agradecería para tenerlo y adoptarlo.

Ejemplos de indentación -> http://en.wikipedia.org/wiki/Wikipedia:Indentation

Saludos.
« Última modificación: 19 Agosto 2013, 01:22 am por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Asignar variables de un webbrower aVB.
Programación Visual Basic
Menal_mur 0 1,461 Último mensaje 19 Agosto 2013, 17:25 pm
por Menal_mur
Suma de variables dentro de bucle for en .bat
Scripting
franfis 8 12,963 Último mensaje 9 Marzo 2014, 16:50 pm
por Eleкtro
Asignar valores de un fichero a variables de una funcion
Programación C/C++
joelujos 0 1,548 Último mensaje 6 Diciembre 2015, 00:13 am
por joelujos
Como asignar tiupo a muchas variables
Programación C/C++
CBFD 9 4,063 Último mensaje 10 Mayo 2016, 11:52 am
por CBFD
Asignar tipo a variables en C++
Programación C/C++
@XSStringManolo 2 2,585 Último mensaje 10 Abril 2021, 18:36 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines