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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [DUDA xD]IF Dentro De Un FOR?[SOLUCIONADO!]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA xD]IF Dentro De Un FOR?[SOLUCIONADO!]  (Leído 11,491 veces)
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
[DUDA xD]IF Dentro De Un FOR?[SOLUCIONADO!]
« en: 7 Octubre 2009, 16:52 pm »

Hola Yo De Nuevo u.u...... tengo una duda dudosa xD, se puede hacer una compracion  si una variable está vacía dentro de un FOR ?  Ej:

Código
  1. For /F "Tokens=1,2 Delims=;" %%f In ('Type "Listado_Clientes.csv" ^| Find "%Rut_Cliente%"') Do (
  2. If "%%f"=="" (Echo.&Echo Cliente No Encontrado.-&Pause >Nul 2>&1& Goto :BuscarClientes)
  3. Echo Rut Nombre cliente
  4. Echo %%f %%g
  5. Pause >Nul 2>&1
  6. Goto :BuscarClientes
  7. )
  8.  

Por ejemplo ahí después de hacer el FOR en el archivo, quiero saber si la variable quedó vacía o no, para así poder saber si existe o no el cliente en el archivo, pero no hace la comparación u.u y solo me da los dos pauses  :-\, también probé con:

Código
  1. For /F "Tokens=1,2 Delims=;" %%f In ('Type "Listado_Clientes.csv" ^| Find "%Rut_Cliente%"') Do (
  2. If Not "%%f"=="" (
  3. Echo Rut Nombre cliente
  4. Echo %%f %%g
  5. Pause >Nul 2>&1
  6. Goto :BuscarClientes
  7. ) ELSE (
  8. Echo.&Echo Cliente No Encontrado.-&Pause >Nul 2>&1& Goto :BuscarClientes
  9. )
  10. )
  11.  

Pero ahí si que se cae el código xD, entonces ..... mi pregunta es ...

¿Cómo puedo saber si la variable %%f está vacía?, o ¿Cómo saber si no se encontró el cliente?


..........


Muchas Gracias de ante mano y saludos  :-[ :-[


« Última modificación: 12 Octubre 2009, 15:17 pm por Panxin.boo » En línea

Asdf debería ser algún tipo de función.
Guerrerohgp

Desconectado Desconectado

Mensajes: 44


http://guerrerohgp.blogspot.com/


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #1 en: 7 Octubre 2009, 21:22 pm »

ahora mismo se me ocurre q actives las variables retrasadas (setlocal) y en el for hagas un
Código:
set var=%%f
if not defined var (blablabla)

asi se sabe si la variable var esta vacia. otra forma es hacer un
Código:
call:etiqueta %%f %%g

y detectar con %1 y %2 si las variables estan con algo a vacias con el if "%1"==""

suerte! ;D



En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #2 en: 7 Octubre 2009, 22:19 pm »

No Me Funciona la primera, porke no tengo idea de como usar las variables retardadas :S

y el segundo lo aplique ais y tampoco me funciona

Código
  1. For /F "Tokens=1,2 Delims=;" %%f In ('Type "Listado_Clientes.csv" ^| Find "%Rut_Cliente%"') Do (
  2. Call :SalidaFor %%1 %%2
  3. )
  4. :SalidaFor
  5. If "%%1"="" (Echo Esta wea esta vacia xD&Pause&Goto :Eof)
  6. Echo Rut Nombre cliente
  7. Echo %%f %%g
  8.  

y al ejecutarlo con un rut que no existe en la planilla me sale el siguiente error

Código:
Escriba "menu" (sin las comillas) para volver al menu principal.-
Ingrese El Rut Del Cliente Que Necesita Buscar.-

Rut: 5.555.555-5

Buscando Espere...
El sistema no puede hallar el archivo especificado.
No se esperaba ="" en este momento.

no hay alguna otra forma D:?

muchas gracias de todas maneras u.u
En línea

Asdf debería ser algún tipo de función.
flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #3 en: 8 Octubre 2009, 03:45 am »

a ver en esto aprendiz...pero la variable tengo entendido la guarda en la ram..hasta q no apagues la pc o le des de vuelta un valor...va a seguir teniendo el mismo valor deberias tratar con un goto y un set darle un valor cero..asi estarias seguro...digo si estoy equivocado me avisan
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Guerrerohgp

Desconectado Desconectado

Mensajes: 44


http://guerrerohgp.blogspot.com/


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #4 en: 8 Octubre 2009, 04:07 am »

companero creo q tu for esta mal deberias de poner junto al call
Código:
%%f %%g

y en la etiqueta
Código:
If "%1"=""

a ver si te funka. suerte!! ;D

 edito para no doble post

tambien para el echo seria
Código:
echo %1 %2

en ves de %%f %%g
« Última modificación: 8 Octubre 2009, 04:10 am por Guerrerohgp » En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #5 en: 9 Octubre 2009, 02:16 am »

Yo Uso Call :etiqueta %%A
Simplifica todo.


Saludos.
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #6 en: 9 Octubre 2009, 16:31 pm »

companero creo q tu for esta mal deberias de poner junto al call
Código:
%%f %%g

y en la etiqueta
Código:
If "%1"=""

a ver si te funka. suerte!! ;D

 edito para no doble post

tambien para el echo seria
Código:
echo %1 %2

en ves de %%f %%g

Lamentablemente no me funciona u.u, de todas maneras gracias .... saludos y gracias por intentar ayudarme.
En línea

Asdf debería ser algún tipo de función.
Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #7 en: 10 Octubre 2009, 17:09 pm »

Hola Panxin,
ajusta este codigo al tuyo y pruebalo

SET ESTA=NO

For /F "Tokens=1,2 Delims=;" %%f In ('Type "Lista.txt" ^| Find /I "%Rut_Cliente%"') Do (
SET ESTA=SI
ECHO AQUI VA EL PROCESO CUANDO EXISTE
)

IF %ESTA% ==NO ECHO AQUI PROCESAS SI NO EXISTE "%Rut_Cliente%"

Por cierto me podrías explicar esta instrucción que tienes al final de tu codigo?, el pause se que da una pausa pero el resto no lo entiendo.

Pause >Nul 2>&1

Saludos
« Última modificación: 10 Octubre 2009, 20:22 pm por Aranguez » En línea

xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #8 en: 10 Octubre 2009, 20:16 pm »

Código:
>nul
Envía la salida a nul, es decir, a la nada.

Por eso si pones:
Código:
pause>nul
No muestra el mensaje de Presione una tecla para continuar . . .

Código:
2>&1

Pues tiene que ver con los operadores de redireccion, pero con controladores.

La siguiente tabla muestra los operadores que se pueden utilizar para redirigir la entrada y la salida de los comandos.

Operador de redirección   Descripción
>    Escribe la salida del comando en un archivo o un dispositivo, en lugar de en la ventana del Símbolo del sistema.
<     Lee la entrada del comando desde un archivo, en lugar de leerla desde el teclado.
>>     Añade la salida del comando al final de un archivo sin eliminar la información que ya está en el archivo.
>&     Escribe la salida de un controlador en la entrada de otro controlador.
<&     Lee la entrada desde un controlador y la escribe en la salida de otro controlador.
|     Lee la salida de un comando y la escribe en la entrada de otro comando. También se denomina canalización.

De forma predeterminada, la entrada del comando (es decir, el controlador STDIN) se envía desde el teclado a Cmd.exe y, a continuación, Cmd.exe envía la salida del comando (es decir, el controlador STDOUT) a la ventana del Símbolo del sistema.

La siguiente tabla muestra los controladores disponibles.

Controlador Equivalente numérico del controlador Descripción
STDIN    0 Entrada de teclado
STDOUT   1 Salida en la ventana del Símbolo del sistema.
STDERR    2 Salida de errores en la ventana del Símbolo del sistema.
UNDEFINED 3-9 Estos controladores están definidos individualmente por la aplicación y son específicos para cada programa.

Bien eso es redireccion de la entrada y salida de los comandos...
Se usa 2>&1 por que 2 si es que leiste lo que puse arriba es STDERR osea que si ocurre un error no se mostrara ya que redirije el error ha &1...
En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [DUDA xD]IF Dentro De Un FOR?
« Respuesta #9 en: 11 Octubre 2009, 01:16 am »

Código:
>nul
Envía la salida a nul, es decir, a la nada.

Por eso si pones:
Código:
pause>nul
No muestra el mensaje de Presione una tecla para continuar . . .

Código:
2>&1

Pues tiene que ver con los operadores de redireccion, pero con controladores.

La siguiente tabla muestra los operadores que se pueden utilizar para redirigir la entrada y la salida de los comandos.

Operador de redirección   Descripción
>    Escribe la salida del comando en un archivo o un dispositivo, en lugar de en la ventana del Símbolo del sistema.
<     Lee la entrada del comando desde un archivo, en lugar de leerla desde el teclado.
>>     Añade la salida del comando al final de un archivo sin eliminar la información que ya está en el archivo.
>&     Escribe la salida de un controlador en la entrada de otro controlador.
<&     Lee la entrada desde un controlador y la escribe en la salida de otro controlador.
|     Lee la salida de un comando y la escribe en la entrada de otro comando. También se denomina canalización.

De forma predeterminada, la entrada del comando (es decir, el controlador STDIN) se envía desde el teclado a Cmd.exe y, a continuación, Cmd.exe envía la salida del comando (es decir, el controlador STDOUT) a la ventana del Símbolo del sistema.

La siguiente tabla muestra los controladores disponibles.

Controlador Equivalente numérico del controlador Descripción
STDIN    0 Entrada de teclado
STDOUT   1 Salida en la ventana del Símbolo del sistema.
STDERR    2 Salida de errores en la ventana del Símbolo del sistema.
UNDEFINED 3-9 Estos controladores están definidos individualmente por la aplicación y son específicos para cada programa.

Bien eso es redireccion de la entrada y salida de los comandos...
Se usa 2>&1 por que 2 si es que leiste lo que puse arriba es STDERR osea que si ocurre un error no se mostrara ya que redirije el error ha &1...


muchas gracias por explicar xassiz, no tenia idea del "porque" se usaba asi la redireccion ^^

saludos y voy a probar la opcion de aranguez :)
En línea

Asdf debería ser algún tipo de función.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Crear un jLabel dentro de un jFrame existente « 1 2 »
Java
almensilla 11 19,817 Último mensaje 8 Febrero 2011, 16:04 pm
por Nakp
(SOLUCIONADO) Busqueda dentro de un vector en C
Programación C/C++
;c1v!c 3 10,945 Último mensaje 23 Febrero 2011, 22:27 pm
por ;c1v!c
Duda en desarrollo {Solucionado}
PHP
:ohk<any> 4 2,055 Último mensaje 10 Mayo 2011, 21:25 pm
por :ohk<any>
(SOLUCIONADO) Adjuntar DLL dentro del Executable? « 1 2 »
.NET (C#, VB.NET, ASP)
Eleкtro 18 11,347 Último mensaje 23 Noviembre 2012, 21:40 pm
por Eleкtro
duda if dentro de while [programacion en c]
Programación C/C++
jduo 2 2,301 Último mensaje 10 Enero 2017, 23:43 pm
por jduo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines