Autor
|
Tema: problema al asignar variables dentro un bucle (Leído 3,012 veces)
|
wcordero
Desconectado
Mensajes: 2
|
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: 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 type %TMP%\inst.log |find /v /c "" > %TMP%\CNT osql -E -Q"select @@version" -o%TMP%\Est_Inst.inst type %TMP%\Est_INst.inst |find /v /c "" > %TMP%\CNT if %CNT% EQU 21 (echo NOOK %date%_ %time% >> %TMP%\EST_INST.lg ) ELSE (echo OK %date%_ %time% >> %TMP%\EST_INST.lg ) osql -E -S%SRV%\%i -Q"select @@version" -o%TMP%\Est_Inst.inst type %TMP%\Est_INst.inst |find /v /c "" > %TMP%\CNT if %CNT% NEQ 21 (echo NOOK %i >> %TMP%\EST_INST.lg ) ELSE (echo OK >> %TMP%\EST_INST.lg ) ) )
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
Mensajes: 9.878
|
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
Mensajes: 2
|
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!!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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:
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 textorespecto 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:IndentationSaludos.
|
|
« Última modificación: 19 Agosto 2013, 01:22 am por EleKtro H@cker »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Asignar variables de un webbrower aVB.
Programación Visual Basic
|
Menal_mur
|
0
|
1,557
|
19 Agosto 2013, 17:25 pm
por Menal_mur
|
|
|
Suma de variables dentro de bucle for en .bat
Scripting
|
franfis
|
8
|
13,577
|
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,822
|
6 Diciembre 2015, 00:13 am
por joelujos
|
|
|
Como asignar tiupo a muchas variables
Programación C/C++
|
CBFD
|
9
|
4,418
|
10 Mayo 2016, 11:52 am
por CBFD
|
|
|
Asignar tipo a variables en C++
Programación C/C++
|
@XSStringManolo
|
2
|
2,952
|
10 Abril 2021, 18:36 pm
por @XSStringManolo
|
|