Título: [Batch] Problema con las variables [Solucionado] Publicado por: DA KILLER en 15 Mayo 2010, 15:46 pm Hola, me encuentro con dos pequeños problemas.
Primer Problema: No encuentro que estoy haciendo mal al tratar de que cuando una variable no esta definida vaya a un label, en lugar de ello el batch colapsa. Segundo Problema: Me gustaría que cuando el usuario inserte el valor de una variable no pueda insertar determinados caracteres que conllevan al colapso del batch. Dejo el code para que se entienda mejor: Código: @echo off El Primer Problema: No se porque cuando le doy Enter a la primera vez, es decir sin definir %var% en lugar de ir a error se cierra el programa. Probé de hacer lo siguiente: -> Cambiar el orden del "if not defined" Código: if not defined %var% goto error -> Sacar los "%" Código: if var not defined goto error Código: if not defined var goto error Y ninguno me funcionó. El Segundo Problema: Mi intención es que si el usuario inserta alguno de los sig. caracteres el programa no colapse: CARACTERES: & >< | Así como si el usuario ingresa un espacio dentro del texto tampoco lo haga. Para esto intente lo siguiente: -> Poner comillas dobles en la variante (como cuando de trabaja con rutas) Código: set/p "var=Escriba TEST:" -> Poner "^" después del texto (como cuando se quiere ingresar caracteres reservados [EJ: ^&]) Código: set/p var=Escriba TEST: ^ Así me devolvió: "if ==TEST (goto Ok) else (goto wrong)", y al insertar un caracter colapsó. Código: set/p "var=Escriba TEST: "^ Al hacer esto no me devolvió la cadena, pero igual colapsa. Espero mi duda sea entendible. Desde Ya gracias por su ayuda. Título: Re: [Batch] Problema con las variantes Publicado por: DA KILLER en 15 Mayo 2010, 15:47 pm Ah me olvidaba, me podrían explicar como funciona el comando "~% dp0"
Gracias y saludos Título: Re: [Batch] Problema con las variantes Publicado por: flony en 15 Mayo 2010, 18:18 pm el primer problema es que pones
Código: set/p var=Escriba TEST: Código: echo escriba TEST para ingresar Título: Re: [Batch] Problema con las variantes Publicado por: DA KILLER en 15 Mayo 2010, 20:54 pm el primer problema es que pones Código: set/p var=Escriba TEST: Código: echo escriba TEST para ingresar No me has entendido, ademas lo que va luego del igual es un texto sin valor, si tu te fijas al poner ese codigo te saldrá: Código: escriba TEST para ingresar Título: Re: [Batch] Problema con las variantes Publicado por: DA KILLER en 15 Mayo 2010, 21:06 pm Lo que tu dices es declarar una variable fija [EJ: set test==TEST]
Lo que yo digo son errores que causa el usuario cuando se le pide que ingrese un valor, y por error ingresa un símbolo de redireccionamiento. Para que me entiendas copia este code: Código: @echo off Ahora fijate que pasa si cuando te pide un numero tu pones cualquiera de estos símbolos: > < | & O que pasa cuando insertas dos números separados por un espacio: 1 0 Si quieres ahorrar tiempo, el programa colapsa. Por ello yo quiero que el usuario NO PUEDA utilizar dichos símbolos. Título: Re: [Batch] Problema con las variantes Publicado por: DA KILLER en 15 Mayo 2010, 21:15 pm Miren el codigo sería algo así:
Código: @echo off Los errores están más arriba PD: Casi me olvido, por si influye trabajo con DOS v 5.1.2600 - Windows XP Profesional 2002 SP 2 De nuevo gracias por su tiempo Título: Re: [Batch] Problema con las variantes Publicado por: leogtz en 15 Mayo 2010, 21:38 pm Se dicen "variables", primero corrige eso.
Título: Re: [Batch] Problema con las variantes Publicado por: DA KILLER en 15 Mayo 2010, 21:58 pm :$ sip, se me pasó por escribir rápido, gracias Leo.
Ya está arreglado. Título: Re: [Batch] Problema con las variables Publicado por: leogtz en 15 Mayo 2010, 22:16 pm No he leído la totalidad del post, pero respecto a la duda principal:
Citar No encuentro que estoy haciendo mal al tratar de que cuando una variable no esta definida vaya a un label, en lugar de ello el batch colapsa. Eso lo puedes hacer con if, mira: Código: if not defined variable (goto:label) Aquí no es necesario los % %. A lo segundo, ya se ha hablado bastante en el foro sobre filtros Batch. Busca sobre "anti batch inyection". Título: Re: [Batch] Problema con las variables Publicado por: DA KILLER en 15 Mayo 2010, 22:19 pm Ah OK, me faltaban los paréntesis, luego leo el otro tutorial, y me gustaría que me aclares lo del comando "~% dp0"
Gracias y saludos. Título: Re: [Batch] Problema con las variables Publicado por: leogtz en 15 Mayo 2010, 22:31 pm Son tipos de variables que pueden ser usadas de esta manera:
%~d0 Donde "0" hace referencia al mismo archivo batch. La letra d, hace referencia al disco (drive) Si yo hiciera esto: %~dp1 Estaría haciendo referencia a la variable %1 posicional, más (drive) y el path o la ruta. Aquí tienes más información: Código: http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html Título: Re: [Batch] Problema con las variables Publicado por: xassiz_ en 16 Mayo 2010, 14:04 pm Para lo de los caracteres especiales te servirá mi script:
http://foro.elhacker.net/scripting/fbat_pequeno_filtro_by_xassiz-t265981.0.html (http://foro.elhacker.net/scripting/fbat_pequeno_filtro_by_xassiz-t265981.0.html) Título: Re: [Batch] Problema con las variables Publicado por: DA KILLER en 17 Mayo 2010, 00:38 am OK el filtro de xassiz me ayudo con los caracteres reservados, pero sigue sin tomarme el if not defined, apenas lo solucione lo posteo completo y corregido.
Título: Re: [Batch] Problema con las variables Publicado por: flony en 17 Mayo 2010, 00:56 am tenes razon las variables se ingresan == y no = y tal vez por ahi el declarar las variables se te complique en
Código: set/p var=Escriba TEST: Título: Re: [Batch] Problema con las variables Publicado por: xassiz_ en 18 Mayo 2010, 23:36 pm , pero sigue sin tomarme el if not defined La estructura de if not defined es "if not defined variable" Código: set variable=hola Así estás haciendo tú, el cmd lo interpreta así: Código: set variable=hola A que me refiero? Que no la tienes que expandir: Código: set variable=hola Título: Re: [Batch] Problema con las variables Publicado por: flony en 19 Mayo 2010, 00:42 am Código: [code@echo off ahi ta funciona eso era lo q te decia, eso si funciona con mayusculael TEST si queres ponelo en minuscula pones lo q sea y no funciona solo TEST Título: Re: [Batch] Problema con las variables Publicado por: DA KILLER en 19 Mayo 2010, 03:53 am No, lo que pasa es que al emplear el filtro de xassiz se pre-define la variable a tratar para el "filtrado" pero es una bolud** arreglarlo, ahora busco el code y la rta.
El code es: Código: set "test="&set/p "test= Password: " Al hacer esto se "pre-define" la variable "test", pero si reemplazamos el 1er "test" por no se "ej" si funciona, EJ: Código: set "ej="&set/p "test=Ingrese KILLER: " Saludos y gracias. PD: Perdón por no conectarme antes, pero tengo un troyano dando vueltas que me tiene como loco :P Título: Re: [Batch] Problema con las variables Publicado por: DA KILLER en 19 Mayo 2010, 03:54 am Bueno, queda solucionado el tema al menos que alguien no entienda algo más.
|