BATCH [! Setlocal - primera ves los veo :|]

Iniciado por Esperpentor, 26 Junio 2010, 22:39 PM

0 Miembros y 1 Visitante están viendo este tema.

Esperpentor

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 ...

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: 

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 -----

leogtz

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 (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
set "string="
for /l %%_ in (1, 1, 10) do (
rem Usando %% no se expande la variable, es necesario !!
set "string=%string%*"
)
echo %string%


Ahora usando !!:
Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
set "string="
for /l %%_ in (1, 1, 10) do (
rem Usando %% no se expande la variable, es necesario !!
set "string=!string!*"
)
echo %string%
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com