asignar variables en .bat

Iniciado por viejari, 30 Mayo 2012, 16:57 PM

0 Miembros y 1 Visitante están viendo este tema.

viejari

Hola a todos!!!
Desde ayer estoy aprendiendo a generar un archivo .bat, lo cual me ha sido un poco complicado porque he buscado info en la web y no me aportan mucho, he revisado esos archivos hechos por otros personajes en la empresa y como no entiendo el codigo y no me gusta copiar como loro he ido investigando por mi cuenta...

Hasta acá todo bien...

Pero mi duda-problema es que quiero asignar un valor a una variable para que se vea en el mismo archivo log de salida...
esto es lo que tengo hasta ahora y no he encontrado información al respecto....
Alguien sabrá donde puedo encontrar la info? o en su defecto decirme si "es muy tonto lo que trato de hacer"?

Lo que realiza el .bat es ejecutar un procedimiento en SQL server 2000 y luego buscar datos de una tabla que se llenó con dicho procedure...

Los datos quedan bien en el archivo de INFORME, sin embargo quiero realizar un count(xx) a la tabla para informar en el archivo de log..

Código (dos) [Seleccionar]

Echo ....Creando archivo                        >>%4\LOG_CUGE_%6.log
Echo -------------------------------------------------------------------------- >>%4\LOG_CUGE_%6.log
DATE /T >>%4\LOG_CUGE_%6.log
TIME /T


REM ----------------------------------------------------------------------------
REM SQL A TABLA CON LA INFO
REM ----------------------------------------------------------------------------
set Subproceso=SQLT1

BCP "select * from BGES_CTL_JUD.dbo.TMP_TXT_LOG_CUGE " queryout %5\%v_NOM_REP% -S%3 -U%1 -P%2 -c -e>> %4\LOG_CUGE_%6.log

rem ----------------------------------------------------------------------------------------------
Echo .
REM ----------------------------------------------------------------------------
REM CAPTURA ERROR
REM ----------------------------------------------------------------------------
set CodErr=%errorlevel%


donde v_NOM_REP es la ruta y nombre del archivo de infrome y LOG_CUGE_.. es el archivo Log.

Hago esto (que obviamente está mal, porque desconozco como funciona...)
Código (dos) [Seleccionar]

set %v_cant_Un%=select COUNT(*) from BGES_CTL_JUD.dbo.TMP_CUGE

Echo -------------------------------------------------------------------------- >>%4\LOG_CUGE_%6.log
Echo Universo de casos [%v_cant_Un%]                    >>%4\LOG_CUGE_%6.log
Echo -------------------------------------------------------------------------- >>%4\LOG_CUGE_%6.log


Por la ayuda de antemano Muuuuchas gracias...



Elektro H@cker: Usa el botón Insertar código, hay unas normas.
Paciencia, cualidad que hay que saber cultivar....
PERO YA!!!!

Eleкtro

Cita de: viejari en 30 Mayo 2012, 16:57 PM
Código (dos) [Seleccionar]

set %v_cant_Un%=select COUNT(*) from BGES_CTL_JUD.dbo.TMP_CUGE

Echo -------------------------------------------------------------------------- >>%4\LOG_CUGE_%6.log
Echo Universo de casos [%v_cant_Un%]                    >>%4\LOG_CUGE_%6.log
Echo -------------------------------------------------------------------------- >>%4\LOG_CUGE_%6.log


Estás usando simbolos de porcentaje al setear la variable, Elimínalos.

Por lo demás, No se que intentas hacer con esa variable, No se a que te refieres con "count(xx)" (¿Un contador? ¿Contador para contar el que?) Pero deja esto así:

Código (dos) [Seleccionar]

set "v_cant_Un=select COUNT(*) from BGES_CTL_JUD.dbo.TMP_CUGE"

(
Echo --------------------------------------------------------------------------
Echo Universo de casos [%v_cant_Un%]
Echo --------------------------------------------------------------------------
)>>%4\LOG_CUGE_%6.log


Saludos








viejari

Elektro H@cker: Primero....disculpa no haber utilizado el boton de insertar codigo, no lo habia visto...

Segundo: tal como agregaste con select count(*) es lo que necesito, utilicé tu codigo, sin embargo el log de salida no me informa nada.., inclusive agregué los parametros de usuario y clave...

set "v_cant_Un=select COUNT(*) from BGES_CTL_JUD.dbo.TMP_CUGE" -U%1 -P%2 -S%3

(
Echo --------------------------------------------------------------------------
Echo Universo de casos [%v_cant_Un%]
Echo --------------------------------------------------------------------------
)>>%4\LOG_CUGE_%6.log


Y cuando pasa por esta sentencia, el log no registra nada mas....


----------------------------------------------------------------------------
SE EJECUTA PROCEDIMIENTO ALMACENADO
----------------------------------------------------------------------------
....Creando archivo                       
--------------------------------------------------------------------------
30-05-2012

Starting copy...
1000 rows successfully bulk-copied to host-file. Total received: 1000
1000 rows successfully bulk-copied to host-file. Total received: 2000

2758 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1      Average : (2758000.00 rows per sec.)



Gracias por tu aporte!!!
Paciencia, cualidad que hay que saber cultivar....
PERO YA!!!!

viejari

Mmm parece que no me expliqué muy bien, lo que yo necesito es que en la variable v_cant_Uni quede el valor del count(*), con el codigo mencionado arriba, la variable queda con valor select count(*).......

Aaa, el codigo en () no funciona, ahi es donde se me cortaba para mi log, los saqué y funciona bien, salvo por el valor de la variable que no se como rescatarlo.

Gracias!!!!
Paciencia, cualidad que hay que saber cultivar....
PERO YA!!!!

viejari

Estimados todos, logré salir del entuerto, les comparto mi solución por si a alguien le sirve...

1° realicé bcp a un .log de paso con el dato que viene del query
2° Copié el resultado en mi log principal
3° Borré el log de paso

Y listo, no sé si sea la mejor solución, pero es la que encontré por ahora...

Si alguien quiere que le comparta el codigo me avisan.

Saludos y gracias..
Paciencia, cualidad que hay que saber cultivar....
PERO YA!!!!