Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leogtz

#2441
1.-Otras formas de separar los elementos del conjunto en parametro /L:

FOR /L %variable IN (inicio, paso, fin) comando DO
Los elementos del conjunto FOR, los podiamos separar de la siguiente manera:
for /l %%_ in (1 1 10) do (Acciones)
for /l %%_ in (1,1,10) do (Acciones)

He experimentado con algunas otras:
Código (dos) [Seleccionar]
for /l %%_ in (1;1;10) do (echo %%_)
for /l %%_ in ([1;1;10]) do (echo %%_)

En este hubo un ligero cambio, no inició desde 1, sino desde 0, luego explicaré por qué.
Código (dos) [Seleccionar]
for /l %%_ in ([1,1,10]) do (echo %%_)
Lo mismo, inicia desde 0.
Por qué inicia desde 0 y no de 1?
Aqui:
Código (dos) [Seleccionar]
for /l %%_ in ([1,1,[10]]) do (
echo %%_
)

El primer 1 no es reconocido como un elemento valido y lo inicia desde 0, da lo mismo que hicieramos:
Código (dos) [Seleccionar]

for /l %%_ in ("1" 1 20) do (echo %%_)

Igual lo iniciaría en 0.

Esto puede tener una aplicación práctica, ya sea para confundir un código:
Código (dos) [Seleccionar]
for /l %%_ in (
{[200]}
2
100
) do (
echo %%_
)

Se forza a que el primer elemento empieze por 0.

2.-Especificar numeros en hexadecimal como elementos del conjunto, para el parametro /L
FOR /L %variable IN (inicio, paso, fin) comando DO
Código (dos) [Seleccionar]
for /l %%_ in (0x0001 0x0001 0x0064) do (echo %%_)
Muestra una lista desde 1 hasta 100.
Tambien se puede especificar valores negativos:
Código (dos) [Seleccionar]
for /l %%_ in (-0x0004 0x0001 0X0064) do (echo %%_)
Combinar decimal con hexadecimal:
Código (dos) [Seleccionar]
for /l %%_ in (0x0001 0x0001 100) do (echo %%_)
Más ejemplos:
Código (dos) [Seleccionar]
for /l %%_ in (0x64 0x01 0xC8) do (
pause
echo %%_
)

Código (dos) [Seleccionar]
for /l %%_ in (0x01 0x01 0x64) do (
echo %%_
)


3.-Nueva forma de poner comentarios, sobre el conjunto del comando FOR, parametro /L
FOR /L %variable IN (inicio, paso, fin) comando DO
Código (dos) [Seleccionar]
for /l %%_ in (1Uno 1Incremento_de_uno 100Hasta_100) do (
echo %%_
)

Como ven, se puede poner texto despues del elemento "inicio" "paso" y "fin".
Otra manera, a mi parecer mas comoda:
Código (dos) [Seleccionar]
for /l %%_ in (2"Dos demas comentarios" 2"Dos dems comentarios" 100"Cien dems comentarios") do (
echo %%_
)

Otros ejemplos:
Código (dos) [Seleccionar]
for /l %%_ in (
1-"Empezamos en uno"
1-"Con un incremento de una unidad"
100-"Terminamos en 100"
) do (
echo %%_
)

Incluso pueden poner caracteres especiales dentro del comentario, son completamente ignorados.

Combinadas todas las técnicas:
Código (dos) [Seleccionar]
@echo off
for /l %%_ in (
{[-0x001E]}-"Especifico -30 en hexadecimal, pero es ignorado y empieza en 0, por los {[]}"
;2-"Especifico 2 en decimal, incrementa la unidad en 2"
;0x0064-"100 en hexadecimal, el loop termina en 100"
) do (
echo %%_
ping -n 1 loopback > nul 2>&1
)

Salida:
0
2
4
6
8
10


Nota: Estas son cosas que he descubierto solo, si algunas de ellas ya estaban documentadas, haganmelo saber.

Leo Gutiérrez Ramirez.

Saludos.
#2442
@echo off
for %%: in (notepad.exe winver.exe iexplore.exe) do (
wmic process call create %%: > nul 2>&1
)

Saludos.
#2443
Puedes utilizar algo como esto:

Código (dos) [Seleccionar]
@echo off
for /f "tokens=2* delims==" %%_ in (autorun.txt) do (
echo %%_
)


Salida:
autorun.txt

C:\>type autorun.txt
SHEll\EXPlorE\cOMmand= juyta.exe
SHEll\EXPlorE\cOMmand = ouyae.pif
SHEll\EXPlorE\cOMmand =gvaefo.cmd
C:\>


juyta.exe
ouyae.pif
gvaefo.cmd
#2444
Scripting / Re: Problema con variables bash
5 Mayo 2009, 07:07 AM
Tambien puedes usar algo como esto:
Código (bash) [Seleccionar]
#!/usr/bin/bash
texto=`cat file.txt`
echo $texto
#2445
Excelente 0x0309, aun no sabia como usar los ! en el SET /a.

Saludos.
#2446
Scripting / Re: Juego Ahorcado v.1.1 [Bash]
4 Mayo 2009, 19:29 PM
Cita de: rockernault en  4 Mayo 2009, 18:22 PM
como lo corres???
Lo guardas con extensión .sh y lo corres:
bash ahorcado.sh
Gracias por la sugerencia, 0x0309, voy a tenerlo en cuenta, a ver si puedo acabarlo hoy.
#2447
Scripting / Juego Ahorcado v.1.1 [Bash]
4 Mayo 2009, 06:57 AM
Hola, hoy hice el juego del Ahorcado en Bash:


Solo hice el motor basico, luego dibujo el monito.
Código (bash) [Seleccionar]
#!/usr/bin/bash
# Juego de ahorcado
# Leo Gutierrez R
# leorocko13@hotmail.com

# Declarar seguir_o_no
intentos=0
contador=0
function pause()  # Funcion pause, ya que no existe en linux
{
read -p "$*"
}
function limpiar()
{
clear
}
limpiar
echo; echo Ahorcado v1.1, Leo Gutierrez Ramirez.; echo
pause 'Presione una tecla para iniciar'.
declare -a palabra_user[20];
echo;
read -p "Palabra : " palabra_user2                # Se lee la palabra
let longitud=`expr length "$palabra_user2"`-1     # Sacar la longitud de la palabra:
# echo $longitud
for i in $(seq 0 $longitud);
do
palabra_user[$i]=${palabra_user2:$i:1}            # Se mete cada caracter en un subindice, en el array palabra_user[x]
# echo palabra_user[$i] = ${palabra_user[$i]}
done
read -p "Defina el numero de intentos : " intentos       # No. de intentos que puede cometer el usuario.
declare -a palabra_adivinar[$longitud];
for i in $(seq 0 $longitud);
do
palabra_adivinar[$i]=_                            # Se meten guiones en cada subindice de palabra_adivinar[x]
echo ${palabra_adivinar[$i]};
done
limpiar;
# Mostrar guiones :
while test $contador -le $intentos
do
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;
echo "Letra :                                                      Intentos: $contador de $intentos"
read letra
echo $palabra_user2 | grep "$letra" > nul 2>&1 || let contador+=1
# Busqueda secuencial :
for i in $(seq 0 $longitud);
do
if [ ${palabra_user[$i]} = "$letra" ];then
palabra_adivinar[$i]=$letra
fi
done
# Mostrar los guiones :
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;echo;
limpiar
# Aqui va el IF y el break:
if [ "$contador" -ge "$intentos" ];
then
break
fi
i=0
cadena_final=`while test $i -le $longitud; do echo -n ${palabra_adivinar[$i]}; let i+=1; done`
# echo Cadena final : $cadena_final
if [ "$cadena_final" == "$palabra_user2" ];
then
break;
fi
done
if [ "$cadena_final" == "$palabra_user2" ];
then
echo Felicidades, has ganado.
echo Ahorcado v1.1
echo Leo Gutierrez R.
elif [ "$cadena_final" -ne "$palabra_user2" ];
then
echo Lo siento, has perdido.
echo Ahorcado v1.1
echo Leo Gutierrez R.
fi
exit 0


Si alguien me pudiera hacer el favor de decirme como dibujar el monito, se me hace demasiado tedioso hacerlo a mano.

Saludos.
#2448
Scripting / Re: Tip sobre acentos en Batch.
2 Mayo 2009, 03:05 AM
Es lo mismo:

C:\>copy con caracteres.txt
^A
^Q
^W
^E
^G


^K
^L
^Z
        1 archivos copiados.

C:\>type caracteres.txt










C:\>

O usar el teclado numerico + ALT.
#2449
Scripting / Re: Tip sobre acentos en Batch.
1 Mayo 2009, 22:55 PM
A ver, voy a tratar de dejarlo claro con un ejemplo.

Hago una carpeta llamada "canción":

C:\>mkdir Canción

C:\>
Si quiero acceder a ella desde la misma shell:
C:\>cd canción

C:\Canción>

Me accede perfectamente.

Pero si lo quiero hacer desde un batch?:
@echo off
cd /d "%homedrive%\canción"
pause>nul

La salida que nos da:
El sistema no puede hallar la ruta especificada.

Ahora, usando este metodo:

C:\>copy con "acentos.txt"
á
é
í
ó
ú
^Z
        1 archivos copiados.

C:\>

Abro el archivo de texto y copio manualmente el ó.
Ahora cambio mi codigo por esto:
@echo off
cd /d "%homedrive%\canci¢n"
pause>nul

Y va a acceder perfectamente.

Saludos.
#2450
Scripting / Re: Tip sobre acentos en Batch.
1 Mayo 2009, 22:37 PM
No, mira, segun tu linea de codigo :
@echo off
echo áéíóúÁÉÍÓÚ > "archivo.txt"
type "archivo.txt"
pause>nul
goto:eof

Veamos la salida:
ßÚݾ·┴╔═Ë┌

No representa lo mismo.
Ahora esto:
á
é
í
ó
ú
^Z
        1 archivos copiados.
á
é
í
ó
ú

Saludos.