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

#2591
Scripting / Re: Pequeña duda bat.
15 Noviembre 2008, 16:46 PM
@ECHO OFF
IF ["%1"]==[""] (
ECHO FALTA VALOR!
ECHO MODO DE USO :
ECHO %~NX0 VALOR
REM AQUI TODO EL DEMAS CODIGO.
)
ECHO %1
GOTO:EOF


Un posible problema es que si el usuario intrudoce ", saldrá error en el Batch.
#2592
Bueno esta forma nunca la habia visto, la acabo de descubrir jugando con ciertos caracteres, se usa asi :

@echo off
rem Aqui va todo el codigo
(Todo esto no será ejecutado
Es importante no cerrar el parentesis, ya que si se cierra sera ejecutado lo que
esta dentro del parentesis.
Debe de usarse solo al final de los codigos.


Hasta ahorá se podian usar comentarios de estas formas :
@echo off
REM COMENTARIO
::COMENTARIO
% COMENTARIO %
PAUSE
EXIT /B


Una curiosidad :
Cuando usamos un comentario de este tipo :: en un FOR, saldrá error, prueben esto :

@ECHO OFF
FOR %%X IN (NOTEPAD.EXE) DO (
::COMENTARIO SOLO
)


Una explicación sería que ::COMENTARIO SOLO, no es tomado en cuenta, y dará error al tener los () solos.

Es igual a hacer esto :
@ECHO OFF
FOR %%X IN (NOTEPAD.EXE) DO ()


También se obtiene error en el IF :
@ECHO OFF
SET A=1
IF %A%==1 (
ECHO HOLA
::ALGO
)
PAUSE>NUL

En resumen los comentarios quedarían asi :

Código (DOS) [Seleccionar]
@ECHO OFF
REM COMENTARIO
::COMENTARIO
% COMENTARIO %
(COMENTARIOS:
NUEVA FORMA DE COMENTARIOS
LEO GUTIERREZ



Cita de Rob Van der Woude :
Citar
I must confess, this tip by Leo Gutierrez Ramirez baffled me.
I didn't expect it to work, but it does.
See for yourself:

@ECHO OFF
REM Code:
ECHO Hello
REM Comments:
(COMMENT
HELLO!
HI!

The trick is not in the exclamation marks, it is the fact that the parenthesis opens a "code block" which is never closed, and thus seems to be ignored completely by the command interpreter.
As Leo said: a useful way to add comments at the end of a batch file.

Thanks Leo

http://www.robvanderwoude.com/clevertricks.html
#2593
Scripting / Re: Pequeña duda bat.
15 Noviembre 2008, 16:20 PM
Prueba asi :
Código (dos) [Seleccionar]
@ECHO OFF
IF ["%1"]==[""] (
ECHO FALTA VALOR!
)
ECHO:HAS INTRODUCIDO %1
GOTO:EOF

ó así :
Código (dos) [Seleccionar]

@ECHO OFF
SET ME=%1
IF NOT DEFINED ME (
ECHO FALTA VALOR!
)
IF DEFINED ME (
ECHO INTRODUCISTE %1
)
GOTO:EOF


Y si quieres que %1 tenga cierto valor y el batch ejecute alguna función :
Código (dos) [Seleccionar]

@echo off
:: Binary.bat, convierte un texto a codigo binario.
if ["%1"]==[""] (goto:Syntax)
if /i ["%1"]==["-h"] (goto:Syntax)
if /i ["%1"]==["--help"] (goto:Syntax)
if ["%1"]==["/?"] (goto:Syntax)
:Code
set texto=%*
set texto=%texto:a=01000001%
set texto=%texto:b=01000010%
set texto=%texto:c=01000011%
set texto=%texto:d=01000100%
set texto=%texto:e=01000101%
set texto=%texto:f=01000110%
set texto=%texto:g=01000111%
set texto=%texto:h=01001000%
set texto=%texto:i=01001001%
set texto=%texto:j=01001010%
set texto=%texto:k=01001011%
set texto=%texto:l=01001100%
set texto=%texto:m=01001101%
set texto=%texto:n=01001110%
set texto=%texto:o=01001111%
set texto=%texto:p=01010000%
set texto=%texto:q=01010001%
set texto=%texto:r=01010010%
set texto=%texto:s=01010011%
set texto=%texto:t=01010100%
set texto=%texto:u=01010101%
set texto=%texto:v=01010110%
set texto=%texto:w=01010111%
set texto=%texto:x=01011000%
set texto=%texto:y=01011001%
set texto=%texto:z=01011010%
echo %texto%
goto:eof
:Syntax
echo %~nx0
echo.
echo Modo de uso :
echo %~nx0 Caracter
echo Caracter : Debe ser una letra del abecedario.
goto:eof


Saludos.
#2594
Scripting / Ejecución condicional [Batch] LEER
15 Noviembre 2008, 05:44 AM
Ejecucion condicional

Bueno este tutorial, vamos a aprender a usar los caracteres & && || y un poco de ERRORLEVEL.


Una confusion muy frecuente es que usan los caracteres & y && con el mismo proposito, & y && no son iguales.
Tienen sus significados para el CMD.

comando1 & comando2 :
Ejecuta el comando1 seguido de comando2
Equivalencia :
comando1
comando2


comando1 && comando2 :

Ejecuta el comando2 solo si el comando1 fue ejecutado satisfactoriamente.
Equivalencia :
comando1
if %errorlevel%==0 (comando2)


comando1 || comando2 :
Ejecuta el comando2 solo si el comando1 fue ejecutado insatisfactoriamente, es decir, si hubo un error en el comando.
Equivalencia :
comando1
if %errorlvel%==1 (comando2)
}
El || se definiria como un %errorlevel% neq 0, ya que no todos los comandos devuelven un 0 o un 1.

Ejemplo :

C:\WINDOWS\system32>ldkfjgkldjfgkljdklfgkljdfg & echo %errorlevel%
"ldkfjgkldjfgkljdklfgkljdfg" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
9009

C:\WINDOWS\system32>

Ahi es donde aplica el %errorlevel% neq 0.

Gracias a Carlitos por la aclaración.

Vamos a ver algunos ejemplos :
Codigo con & :
@ECHO OFF
REM SE EJECUTA EL COMANDO MSG, SEGUIDO DEL ECHO.
MSG * HOLA! & ECHO HOLA
PAUSE>NUL
EXIT /B

Como vemos arriba el uso del & es muy sencillo.

Codigo con && :
@ECHO OFF
MSG * HOLA && ECHO EL COMANDO MSG SE EJECUTO CORRECTAMENTE
PAUSE>NUL


Es equivalente a :
@ECHO OFF
MSG * HOLA
IF %ERRORLEVEL%==0 (
ECHO EL COMANDO MSG SE EJECUTO CORRECTAMENTE
)
PAUSE>NUL

Como vemos, se ahorran mas lineas usando &&

Veamos otro ejemplo :

@ECHO OFF
VER | FIND /I "LEO" && (
REM EL SIGUIENTE CODIGO NUNCA SE EJECUTARA, DEBIDO A QUE EN EL COMANDO VER
REM NO EXISTE NADA RELACIONADO CON LA CADENA "LEO"
ECHO CADENA "LEO" ENCONTRADA EN EL COMANDO VER
)
PAUSE>NUL
EXIT /B


Variemosle un poco para entender mejor :

@ECHO OFF
VER | FIND /I "XP" && (
REM EL SIGUIENTE CODIGO SI EJECUTARA, DEBIDO A QUE EN LA SALIDA DEL COMANDO VER
REM SI EXISTE "XP"
ECHO CADENA "XP" ENCONTRADA EN EL COMANDO VER
)
PAUSE>NUL
EXIT /B


Los caracteres || (pipes o tuberias juntas) :
Codigo con || :

Pondre un codigo simple para detectar si un Host responde a un PING :

@ECHO OFF
PING GOOGLE.COM && (
CLS ;
ECHO PING RESPONDIDO
) || (
CLS
ECHO MAQUINA NO ENCONTRADA!
)


Aqui logicamente que si encontrará a google.com, pero que pasa si ponemos en lugar de google.com sdfjksjdf.com :
@ECHO OFF
PING dklfjlgkdfg.com && (
CLS ;
ECHO PING RESPONDIDO
) || (
CLS
ECHO MAQUINA NO ENCONTRADA!
)
PAUSE>NUL
El codigo nos devolverá : "Maquina no encontrada!"

Como ven, || funciona como un ELSE.

Otro ejemplo de || :
@ECHO OFF
COPY ARCHIVO_INVENTADO.ALGO CARPETA_INVENTADA || (
ECHO EL ARCHIVO NO FUE ENCONTRADO O LA CARPETA DESTINO NO EXISTE!
) || (
ECHO ESTE MENSAJE JAMAS SE VERA
) && (
ECHO ESTE MENSAJE TAMPOCO.
)
PAUSE>NUL


Con este concluye este tutorial.

PD : No confundir || con | ni & con &&, tienen sus significados.

Curiosidades :

@ECHO OFF
ECHO HOLA ||~|| (ECHO SI)
PAUSE

@ECHO OFF
ECHO HOLA ||.~.|| (ECHO SI)
PAUSE>NUL


En resumen:
Esto es muy importante saberlo, nos permite ahorrar muchas lineas de codigo, ademas de que el codigo se ve mas legible y elegante.

#2595
Scripting / Re: Ayuda con BAT
14 Noviembre 2008, 17:18 PM
Bueno, primero habria que checar el numero de semana en el que estamos :

@ECHO OFF
SET DAY=%DATE:~0,2%
IF %DAY% LSS 08 (IF %DAY% GEQ 01 (SET NSEMANA=1))
IF %DAY% LSS 15 (IF %DAY% GEQ 08 (SET NSEMANA=2))
IF %DAY% LSS 21 (IF %DAY% GEQ 14 (SET NSEMANA=3))
IF %DAY% LEQ 30 (IF %DAY% GEQ 21 (SET NSEMANA=4))
ECHO %NSEMANA%
PAUSE>NUL


Ahora ya tenemos la variable que contiene el numero de semana en el que estamos, solo habria que hacer :
start "" "Archivo_%NSEMANA%.XLS"

#2596
Scripting / Re: Duda sobre comando extraer
14 Noviembre 2008, 17:01 PM
Winrar tiene soporte para linea de comandos, un ejemplo basico de como se podria descomprimir un .rar sería así :
rar.exe e -ac ARCHIVO.RAR

Tambien podrias utilizar Compress.exe del Windows resource Kits, que comprime en formato MS-ZIP

Otra opcion sería usar un VBS :
http://foro.elhacker.net/scripting/zippear_archivos_en_vbsbatchjs-t222965.0.html

Ó usar Makecab :
makecab /d CompressionType=MSZIP /d FolderSizeThreshold=1 archivo.ext

No se crea un archivo ZIP, pero luego lo puedes descomprimir con el comando EXPAND:
#2597
Scripting / Re: Duda simple
14 Noviembre 2008, 06:59 AM
Crea un acceso directo en el escritorio y en la sección de "Comenzar en : "

Pones la ruta de tu escritorio y listo, luego agregas una combinacion de teclas al acceso directo y listo.
#2598
Scripting / Re: Ayuda con BAT
14 Noviembre 2008, 06:30 AM
Usa comillas :
start "" "Mi archivo.xls"


Saludos.
#2599
Scripting / Re: comando de descarga desde ms-dos
13 Noviembre 2008, 17:10 PM
Puedes usar GET para Windows, o usar el software Iopus File Downloader, tiene soporte para linea de comandos :
downloader -download URL FILENAME

O usar un script en VBS.

http://www.iopus.com/download/
#2600
Se le pueden hacer una pequeñas mejoritas :

@echo off
color fc
if exist %homedrive%\passwordbas cd /d %homedrive%\passwordbas
if not exist %homedrive%\passwordbas mkdir %homedrive%\passwordbas
title PASSWORD BAS 0.1 ~ Creado por Erik
echo Bienvenido a password BAS! En este programa podras almacenar tus passwords.
echo.
:passwords
echo Bienvenido, que desea hacer:
echo 1.Mirar
echo 2.Almacenar
echo 3.Salir
set /p ejecutar=Elijo la opcion:
if not defined ejecutar (cls & goto:passwords)
cls
if %ejecutar%==1 goto:mirar
if %ejecutar%==2 goto:almacenar
if %ejecutar%==3 (exit) else (goto:passwords)
:almacenar
set /p name=Escribe el nombre para la password (Se utilizara cuando se busque):
if not defined name (goto:almacenar)
set /p contrasave=Escribe la contraseña:
if not defined contrasave (goto:almacenar)
echo %contrasave%>%name%.txt
pause
cls
goto:passwords
:mirar
set /p passmir=Escribe el nombre de la password que deseas mirar:
if not defined passmir (goto:mirar)
if exist %name%.txt goto mostrar
if not exist %name%.txt goto passwords
:mostrar
echo Password:
more %name%.txt
pause>nul
goto:passwords