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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con For /f
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con For /f  (Leído 2,172 veces)
DUF

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda con For /f
« en: 15 Mayo 2013, 01:41 am »

Hola Hakers,

Soy nuevo en estos temas y pues quiero aprender, estoy en mi primer batch, pero tengo el siguiente problema:

Tengo 3 archivos los cuales contienen la siguiente información:

Código
  1. rem ********************************************************
  2. rem ARCHIVO reporte.txt
  3. rem ********************************************************
  4. Tiempo de espera agotado para esta solicitud.
  5.  
  6. Tiempo de espera agotado para esta solicitud.
  7.  
  8. Tiempo de espera agotado para esta solicitud.
  9.  
  10. Tiempo de espera agotado para esta solicitud.


Código
  1. rem ********************************************************
  2. rem ARCHIVO reporte2.txt
  3. rem ********************************************************
  4. Tiempo de espera agotado para esta solicitud.
  5.  
  6. Respuesta desde 10.0.51.171: bytes=32 tiempo<1m TTL=128
  7. Tiempo de espera agotado para esta solicitud.
  8.  
  9. Tiempo de espera agotado para esta solicitud.

Código
  1. rem ********************************************************
  2. rem ARCHIVO reporte3.txt
  3. rem ********************************************************
  4. Tiempo de espera agotado para esta solicitud.
  5.  
  6. Respuesta desde 10.0.51.171: bytes=32 tiempo<1m TTL=128
  7. Respuesta desde 10.0.51.171: bytes=32 tiempo<1m TTL=128
  8. Respuesta desde 10.0.51.171: bytes=32 tiempo<1m TTL=128

En el código marque el batch por pasos y en el paso 1 todo va bien con el "for /f..." pues si me da el valor esperado, posteriormente entro a un "if" donde tengo otro "for /f..." y ahí en ese paso al poner un "echo %resul2" me marca ECHO esta desactivado entro a un segundo "if" y me marca lo mismo con la variable %resul3%, no obtengo valor en mis variables resul2 y resul3

Mi código es el siguiente:

Código
  1. @echo off
  2. rem ********************************************************
  3. echo PASO 1
  4. rem ********************************************************
  5.  
  6. for /f "tokens=3" %%a in ('find /c /i "agotado" reporte.txt') Do set resul1=%%a
  7. find /c /i "agotado" reporte.txt
  8. type reporte.txt
  9. echo EL RESULTADO ES %resul1%
  10.  
  11. rem ********************************************************
  12. echo PASO 2
  13. rem ********************************************************
  14.  
  15. if %resul1% GTR 2 (
  16. for /f "tokens=3" %%a in ('find /c /i "agotado" reporte2.txt') Do set resul2=%%a
  17. find /c /i "agotado" reporte2.txt
  18. type reporte2.txt
  19. echo %resul2%
  20. echo EL RESULTADO ES %resul2%
  21. )
  22.  
  23. rem ********************************************************
  24. echo PASO 3
  25. rem ********************************************************
  26.  
  27. if %resul2% GTR 2 (
  28. for /f "tokens=3" %%a in ('find /c /i "agotado" reporte3.txt') Do set resul3=%%a
  29. find /c /i "agotado" reporte3.txt
  30. type reporte3.txt
  31. echo EL RESULTADO ES %resul3%
  32. ) else (
  33. echo EL EQUIPO RESPONDE
  34. )

GRACIAS POR LA AYUDA.



MOD: Usa el botón de insertar código


« Última modificación: 15 Mayo 2013, 17:02 pm por EleKtro H@cker » En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con For /f
« Respuesta #1 en: 15 Mayo 2013, 16:23 pm »

He estado probando el código y parece que hasta que no terminan todas las operaciones que hay dentro del "if", no se definen las variables que defines en los bucles for ("resul2" y "resul3").
Si sacas las operaciones que siguen al "for" fuera del if para el caso en el que las variables "resul2" y "resul3" estén definidas si que funciona. Con este código me funciona.



Código:
@echo off
rem ********************************************************
echo PASO 1
rem ********************************************************

for /f "tokens=3" %%a in ('find /c /i "agotado" reporte.txt') do (set resul1=%%a)
find /c /i "agotado" reporte.txt
type reporte.txt
echo EL RESULTADO ES %resul1%

rem ********************************************************
echo PASO 2
rem ********************************************************

if %resul1% GTR 2 (
for /f "tokens=3" %%a in ('find /c /i "agotado" reporte2.txt') do (set resul2=%%a)

)
if "%resul2%" NEQ "" (
find /c /i "agotado" reporte2.txt
echo %resul2%
type reporte2.txt
echo EL RESULTADO ES %resul2%
)


rem ********************************************************
echo PASO 3
rem ********************************************************

if %resul2% GTR 2 (
for /f "tokens=3" %%a in ('find /c /i "agotado" reporte3.txt') Do set resul3=%%a
) else (
echo EL EQUIPO RESPONDE
)
if "%resul3%" NEQ "" (
find /c /i "agotado" reporte3.txt
type reporte3.txt
echo.
echo EL RESULTADO ES %resul3%
)
echo.
pause
exit


Un saludo


« Última modificación: 15 Mayo 2013, 16:31 pm por Almapa » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.822



Ver Perfil
Re: Ayuda con For /f
« Respuesta #2 en: 15 Mayo 2013, 17:15 pm »

Bienvenido a Batch,

El problema es que no estás expandiendo las variables dentro de los búcles.

Añade un:
Código:
Setlocal EnableDelayedExpansion

Y usa las variables con exclamaciones:
Código:
Echo !resul2!

O no añadas nada y usa Call:
Código:
Call %%resul2%%



http://foro.elhacker.net/scripting/tema_bloqueado_hasta_finalizar_el_tuto_tutorial_extendido_de_aprendizaje_batch-t375135.15.html

Cita de: Elektro H@cker
  • 6.3 Variables expandidas

Las variables expandidas son prácticamente igual que las variables standard, pero para poder usarlas se debe habilitar la expansión de las mismas con el comando SETLOCAL:
Código:
Setlocal enabledelayedexpansion

Ejemplo:
Código:
@Echo OFF
Setlocal enabledelayedexpansion
Set "VARIABLE=VALOR"
Echo !VARIABLE!
Pause >NUL



Esta técnica se usa comúnmente dentro de un FOR donde para poder mostrar variables tienen que estar expandidas.

Pero estas variables tienes sus inconvenientes, ya que al habilitar la expansión, solamente podremos usar el caracter ! como operador de variable, es decir, no podremos mostrar el caracter (Ni siquiera excluyendolo ni usando comillas).

Ejemplo:
Código:
@Echo OFF
Setlocal enabledelayedexpansion
Echo !Hola
Echo ^!Hola
Echo "!Hola"
Pause >NUL



NOTA: Siempre se puede evitar la expansión y su restricción de caracteres, eso lo explicaré cuando lleguemos a la temática FOR.


http://ss64.com/nt/delayedexpansion.html


PD: Usa el botón "Insertar código" cuando postees
En línea

DUF

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda con For /f
« Respuesta #3 en: 21 Mayo 2013, 16:33 pm »

Muchas gracias a todos los que colaboraron con su ayuda.  :D
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