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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bug en CMD.EXE, comando FOR, parametro /F
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bug en CMD.EXE, comando FOR, parametro /F  (Leído 3,304 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Bug en CMD.EXE, comando FOR, parametro /F
« en: 3 Julio 2009, 03:44 am »

Bug en comando FOR, parametro /f, opcion "USEBACKQ"

Este bug esta relacionado con el trato de cadenas.

La documentación sobre dicha opción dice:
       
Código:
usebackq        - especifica que la nueva semántica está vigente,
                          donde una cadena entre comillas inversas se ejecuta
                          como un comando y una cadena con comillas simples
                          es un comando de cadena literal y permite el uso de
                          comillas dobles para entrecomillar los nombres de
                          archivo en un grupo de nombres de archivos.
Es decir, cambia la semantica:
Código:
'' : Comandos
"" : Cadenas
No especificar comillas dobles o simples : Archivo.
Nos dice que para procesar cadenas, debemos usar comillas simples:

Código
  1. @echo off
  2. for /f "tokens=1 usebackq" %%_ in ('Leonardo') do (
  3. echo %%_
  4. )
Salida:
Código:
Leonardo

Como pueden ver, usamos comillas simples para tratar cadenas.

Sin la opción "usebackq" sería asi:
Código
  1. @echo off
  2. for /f "tokens=1" %%_ in ("Leonardo") do (
  3. echo %%_
  4. )
Salida:
Código:
Leonardo

Ahora, iré directo al problema que afecta a las opciones "useback" y "usebackq":

Esto produce un error:
Código
  1. @echo off
  2. for /f "tokens=1 usebackq" %%_ in ('1 2 3 4 5 6 7 8 10 11 12') do (
  3. echo %%_
  4. )
Salida:

Código:
C:\>code.bat
1
El sistema no puede encontrar el archivo Ɛ§㏀§럀§풘§>♂.

C:\>

Como ven, provoca un error, ya que busca un archivo, pero es claro que no estoy trabajando con archivos, sino con cadenas.

Estos también provocan error:

Código
  1. @echo off
  2. for /f "tokens=1 useback delims=" %%_ in ('p1 p2 p3 p4 p5 p6 p7 p8 p9') do (
  3. echo %%_
  4. )
Salida:
Código:

p1 p2 p3 p4 p5 p6 p7 p8 p9
El sistema no puede encontrar el archivo ?.

Código
  1. @echo off
  2. for /f "tokens=1-20 useback delims=_" %%a in ('p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14') do (
  3. echo %%a  
  4. )
Salida:
Código:
p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14
☼?♀\.stema no puede encontrar el archivo ?¶

En fin, esto esta probado en un Windows XP Professional Service Pack 3

Si me pudieran hacer el favor de probar si en otros sistemas falla, sino les da error, solo alteren la cantidad de tokens en el conjunto, asi:

Código
  1. @echo off
  2. for /f "tokens=1-20 usebackq" %%a in ('1 2 3 4 5 6 7 8 9 11 12 13 14 16 especificar ms tokens en caso de no ver error') do (
  3. echo %%a  
  4. )

Bueno, saludos.


En línea

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

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Bug en CMD.EXE, comando FOR, parametro /F
« Respuesta #1 en: 8 Julio 2009, 11:11 am »

Hola Leo :silbar: Viejo Conocido...

Pues te digo algo. En Windows Vista, no tengo ningun problema, con ninguno de los ejemplos que pones. Quizas para WV, los de M$, pulieron el detalle ;)

Salu2!


En línea

sh0ck-r00t

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Bug en CMD.EXE, comando FOR, parametro /F
« Respuesta #2 en: 4 Septiembre 2009, 17:41 pm »

lo probe copie el code y me da lo mismo que pusiste vos en pantalla ¿aque se deve ese error ?
En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Bug en CMD.EXE, comando FOR, parametro /F
« Respuesta #3 en: 4 Septiembre 2009, 20:18 pm »

Hay leer bien, según lo que yo entiendo (que a lo mejor sea una burrada):
`` (Comillas invertidas): comando
' ': Cadenas que puede tener dentro nombre de archivos con " " (comillas dobles) dentro para identificar nombre de archivos con espacios (Algo como Archivos de Programas).
" "(Comillas dobles): cadenas...
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
C++ vector por parametro.
Programación C/C++
programador10 7 12,385 Último mensaje 10 Octubre 2011, 23:06 pm
por Eternal Idol
Pasar parametro a comando CMD desde VBS
Programación Visual Basic
techcol 1 2,449 Último mensaje 25 Noviembre 2021, 00:05 am
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines