Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Esperpentor en 26 Junio 2010, 22:39 pm



Título: BATCH [! Setlocal - primera ves los veo :|]
Publicado por: Esperpentor en 26 Junio 2010, 22:39 pm
Saludos,

E estado buscando el funcionamiento de ! pero no lo hallo, resulta que estoy resolviendo un batch de un reto, pero no encuentro la info sobre el funcionamiento de ese !, ademas no se como funciona en realidad el set local ...
Código:
setlocal enabledelayedexpansion
title Batch III
set c= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/"=:()!%%0123456789
echo %c%
color %c:~60,1%d
echo off
set /P cadena="Ingrese la contraseña: "
set cadena=!cadena: =!

- Setlocal, necesitaria una explicacion mas humana que la me me ofrece la ayuda de winodws

- En --> set c= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/"=:()!%%0123456789

  - Si le hago un Echo %c% me devuelve: 
Código:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/"=:()%0123456789
  - Osea que paso con !% --> algo se de que se debe poner %% dos veces para que se muestre, lo aprendi hoy buscando aca, pero y el !, mas enigma para este caracter.

---- Y yo que pensaba que sabia Batch, al pasarme y buscar por aca me e dado cuenta que no se nada :o -----


Título: Re: BATCH [! Setlocal - primera ves los veo :|]
Publicado por: leogtz en 26 Junio 2010, 23:02 pm
En este caso no sirve de nada, el caracter ! junto a setlocal sirve para expandir variables.

Es muy útil cuando estás dentro de ciclos FOR.

Mira esto:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "string="
  4. for /l %%_ in (1, 1, 10) do (
  5. rem Usando %% no se expande la variable, es necesario !!
  6. set "string=%string%*"
  7. )
  8. echo %string%

Ahora usando !!:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "string="
  4. for /l %%_ in (1, 1, 10) do (
  5. rem Usando %% no se expande la variable, es necesario !!
  6. set "string=!string!*"
  7. )
  8. echo %string%