Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: leogtz en 8 Marzo 2009, 05:42 am



Título: [Batch] Poner comentarios en el comando Set.
Publicado por: leogtz en 8 Marzo 2009, 05:42 am
Encontre una forma de poner comentarios en el comando set, sin alterar el comportamiento del mismo.

Un ejemplo para que quede bien claro :
Código:
@echo off
set "saludo=Hola" // Este es mi comentario.
echo.%saludo%

Hay que entrecomillar la "asignación", luego pueden usar cualquier estilo de comentario.

Algunos ejemplos :

Código:
@echo off
set /p "suma=2+2 : " # La suma, my comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

Código:
@echo off
set /p "suma=2+2 : "  // La suma
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

Código:
@echo off
set /p "suma=2+2 : "  /* La suma */
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma
Código:
@echo off
set /p "suma=2+2 : "  ' Comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

Código:
@echo off
set /p "suma=2+2 : "  Comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma
Código:
@echo off
for %%. in (H e l l o _ W o r l d) do (
    call :show %%.
)
goto:eof

:show
<nul set /p "=%*" // Comentario
ping -n 1 loopback > nul
goto:eof

En realidad es sencillo, ya que el Set solo toma el primer parametro, lo siquiente es ignorado.

El truco ya aparece en el sitio de Rob Van Der Woude :
Citar
Leo Gutierrez Ramirez found a way to add any  (language) style comments to SET /P commands:

@echo off
set /p "suma=2+2 : " # La suma, my comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

@echo off
set /p "suma=2+2 : "  // La suma
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

@echo off
set /p "suma=2+2 : "  /* La suma */
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

@echo off
set /p "suma=2+2 : "  ' Comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma

@echo off
set /p "suma=2+2 : "  Comment
if %suma% equ 4 (
    echo.Bien
) else (
    echo.Mal
)
set suma


@echo off
for %%. in (H e l l o _ W o r l d) do (
    call :show %%.
)
goto:eof

:show
<nul set /p "=%*" // Comentario
ping -n 1 loopback > nul
goto:eof

As a matter of fact, any text after the closing doublequote is ignored.

Thanks Leo
Código:
http://www.robvanderwoude.com/clevertricks.php

Saludos.


Título: Re: Poner comentarios en el comando Set. [Batch]
Publicado por: Darioxhcx en 8 Marzo 2009, 17:32 pm
solo sirve en set no ?
no lo puedo probar no estoy en win , pero es muy bueno
para cuando se tiene que explicar una linea
gracias Leo

saludos


Título: Re: Poner comentarios en el comando Set. [Batch]
Publicado por: leogtz en 8 Marzo 2009, 18:38 pm
Si, solo para el Set, tiene que haber más, solo hay que encontrarlos.

Nota: Para el parametro /a no sirve esto.


Título: Re: Poner comentarios en el comando Set. [Batch]
Publicado por: 0x0309 en 8 Marzo 2009, 22:58 pm
Código:
2>nul set /a "operacion=1000*2-500" se multiplica 1000 por 2 y se restan 500
echo.%operacion%


Título: Re: Poner comentarios en el comando Set. [Batch]
Publicado por: leogtz en 8 Marzo 2009, 23:08 pm
Tienes razon, tambien funciona para el parametro /a.

Crei haber visto algo como "Falta operador"

Gracias.


Título: Re: Poner comentarios en el comando Set. [Batch]
Publicado por: 0x0309 en 8 Marzo 2009, 23:49 pm
En realidad, me equivoqué, no se puede, porque al redirigir la salida de errores a nul se evita el mensaje de error, pero si en el "comentario" colocas un símbolo como + * / sin anteponer nada, por ejemplo +
dirás suma 0. por lo que igual se interpretan dichos carácteres.

Ejemplo:
Código:
@echo off
2>nul set /a "operacion=1000*2-500" +1 se multiplica 1000 por 2 y se restan 500
echo.%operacion%
pause
debería dar 1500, pero da 1501

y lo que tú dices puede utilizarse siempre que no se utilizen símbolos especiales

Código:
set "system=wintendo" /* & calc comentario */


Título: Re: [Batch] Poner comentarios en el comando Set.
Publicado por: Germaniac en 10 Marzo 2009, 00:57 am
esta no me la sabia. ;)
solo sabia en pause y cls

Código:
echo hola
cls comentario
set "a=adios" comentario
echo %a%
pause cometario