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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bug batch.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bug batch.  (Leído 2,634 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Bug batch.
« en: 1 Octubre 2009, 08:33 am »

Yo había leído en un sitio que para asignar con el comando set es lo mismo:

Código:
set "variable=valor"

que

Código:
(set variable=valor)

Sin embargo, he encontrado un bug de cmd.exe.

Cuando cmd.exe reconoce una sola comilla dentro de paréntesis termina el archivo por lotes.

Por eso si se hace:

Código:
(")
el archivo por lotes termina.

Por eso si tenemos el siguiene código:

test.cmd
Código:
@echo off
(set var=%1)
echo.El texto se muestra.

y ejecutamos:

Código:
test.cmd "
el texto no se muestra porque el archivo por lotes concluyó antes por el bug.

Pero si hacemos:

test.cmd
Código:
@echo off
set "var=%1"
echo.El texto se muestra.

el texto si es mostrado.

Entonces no es lo mismo:
Código:
(set variable=valor)
que contiene el bug.

que:

Código:
set "variable=valor"



En línea

xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: Bug batch.
« Respuesta #1 en: 1 Octubre 2009, 18:25 pm »

:o esta interesante, muy buen aporte :o


En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
Guerrerohgp

Desconectado Desconectado

Mensajes: 44


http://guerrerohgp.blogspot.com/


Ver Perfil WWW
Re: Bug batch.
« Respuesta #2 en: 1 Octubre 2009, 19:17 pm »

bueno, no sabia, nisiquiera me ha interesado hacer el set con parentesis, pero es bueno saber gracias. ;-) ;-) ;-)
En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Bug batch.
« Respuesta #3 en: 2 Octubre 2009, 03:55 am »

Qué bueno que siempre he usado las variables entre dobles comillas.
En línea

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

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Bug batch.
« Respuesta #4 en: 2 Octubre 2009, 08:30 am »

ah, sobre lo de usar paréntesis o comillas ... sirve para cuando publicas un código en foros que agregan espacios al final de cada línea, entonces evitas que el código produzca resultados erróneos.

Por ejemplo, supongamos que haces un código algo similar a esto:

set /p t=Texto:
set v=%texto%
if "%v%"=="" (echo.Vacio.)

Entonces como un foro o por ejemplo google groups añade un espacio te queda:

set v=%texto%[Espacio]

y cuando haces:

if "%v%"=="" (echo.Vacio.)

se te cierra el archivo por lotes, pues con expansión simple no puedes tener espacios en el texto del if.

Pero todo se evita así:

set "v=%texto%"

aunque haga:

set "v=%texto%"[Espacio]

el espacio o cualquier cosa que venga después de la comilla final es ignorado.



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