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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Asignar a una variable el resultado de un comando (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Asignar a una variable el resultado de un comando (Solucionado)  (Leído 16,371 veces)
TaRGaZo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[BATCH] Asignar a una variable el resultado de un comando (Solucionado)
« en: 29 Junio 2009, 12:52 pm »

Buenas,

Estoy haciendo un BAT para conceder o denegar permisos a un grupo de usuarios, entre otras, lo tengo todo más o menos listo pero no seré yo quien ejecute ese archivo y no me enteraría de algún posible error en la ejecución.

El comando usado (xcacls), tiene la opción de generar un archivo con el resultado de la ejecución al que yo he llamado "log.txt".

Si el resultado de la ejecución ha sido correcto no aparecerá la palabra "Error" en el archivo log.txt, pero si ha habido algun error esta sí que aparace indicando cual ha sido.

Usando FIND /c /i "error" log.txt

El resultado es por ej: "---------- LOG.TXT: 8" donde 8 es el numero de errores que ha habido en la ejecución

Si pongo FIND /c /i "error" log.txt > errores.txt
Crea un archivo "errores.txt" con el resultado de la ejecucion de FIND

Ahora bien, se le puede asignar a una variable el resultado del comando FIND para poder usar esa variable luego con IF en otra parte del BAT.

O quizas sería más util por ej. asignar a una variable el valor "0" si no encuentra la palabra "error" y "1" si la palabra es encontrada.

Gracias y espero haber sido suficientemente claro.

Saludos.

TaRGaZo


« Última modificación: 30 Junio 2009, 11:01 am por TaRGaZo » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Asignar a una variable el resultado de un comando
« Respuesta #1 en: 29 Junio 2009, 22:13 pm »

A ver, te voy a dejar un ejemplo.

Tengo el siguiente archivo:
file.txt:
Código:
C:\>type "file.txt"
jsldkfjls dsjdklfjsdklfj 2wlkj Error
C:\>

Como ves, si esta la palabra "error", ahora al código:
Código
  1. type "file.txt" | find /i "error" > nul 2>&1 && (set "error=1") || (set "error=0")
  2.  

Si en el archivo "file.txt" existe la palabra "error", se seteará la variable "error" a 1, sino a 0.

Saludos.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
TaRGaZo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [BATCH] Asignar a una variable el resultado de un comando
« Respuesta #2 en: 30 Junio 2009, 10:59 am »

Gracias por la respuesta Leo,

Antes de postear había estado trasteando con el FOR pero no daba con la sistaxis correcta, hasta que me rendí y os pedí ayuda.

Por la tarde seguí intentádolo y finalmente di con la línea que me ha resuelto el problema y además puedo indicar la cantidad de errores que se han producido.

for /f "tokens=3" %%a in ('find /c /i "error" proteger.txt') do set errores=%%a

No se si está correctamente "escrita" la línea y quizás me sobra una variable, pero funciona  ;D.

Gracias otra vez.

Saludos.
« Última modificación: 30 Junio 2009, 11:01 am por TaRGaZo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines