Título: [DUDA xD]IF Dentro De Un FOR?[SOLUCIONADO!] Publicado por: FranciskoAsdf 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 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 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 :-[ :-[ Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: Guerrerohgp 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 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 Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: FranciskoAsdf 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
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.- no hay alguna otra forma D:? muchas gracias de todas maneras u.u Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: flony 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
Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: Guerrerohgp 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 Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: 0x5d en 9 Octubre 2009, 02:16 am Yo Uso Call :etiqueta %%A
Simplifica todo. Saludos. Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: FranciskoAsdf 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. Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: Aranguez 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 Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: xassiz_ en 10 Octubre 2009, 20:16 pm Código: >nul Por eso si pones: Código: pause>nul 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... Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: FranciskoAsdf en 11 Octubre 2009, 01:16 am Código: >nul Por eso si pones: Código: pause>nul 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 :) Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: FranciskoAsdf en 11 Octubre 2009, 01:29 am 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 MUCHISIMAS GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!! Es lo que andaba buscando... te lo agradezco millones ^^ saludos y que estes biieeeeeeennnn!!! Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: Aranguez en 11 Octubre 2009, 01:37 am Me alegra Panxin que te haya servido, también quiero agradecer xassiz, muy buena su respuesta a mi duda y muy buena explicación.
Saludos Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: xassiz_ en 11 Octubre 2009, 12:58 pm De nada bro para eso estamos ;)
Enotnces queda solucionado? Título: Re: [DUDA xD]IF Dentro De Un FOR? Publicado por: FranciskoAsdf en 12 Octubre 2009, 15:17 pm De nada bro para eso estamos ;) Enotnces queda solucionado? seeep |