|
Mostrar Mensajes
|
Páginas: 1 [2]
|
11
|
Programación / Scripting / Re: Batch avanzado
|
en: 21 Diciembre 2008, 01:49 am
|
El primero es un código de Leo que trabaja usando nircmd.exe una utilidad para la consola con muchas funciones. El segundo, y creo hasta el final son códigos de BlackHack, el primero crea una macro con doskey que se cargará cada vez que se abra el cmd.exe sin la opción /d pues cmd.exe lee la clave AutoRun de "HKLM\Software\Microsoft\Command Processor" el objetivo de esa macro es que cuando el usuario escriba netstat.exe ejecute otro programa llamado netstat.com ¿con qué fin? XD El tercero es un código con funciones matemáticas: calcular factorial, calcular raiz, porcentaje, logaritmo El cuarto crea un ejecutable de 16 bit creado con netsend de jim tucker, que al ejecutarlo crea otro ejecutable, que ni idea de que será, pero cuidado con lo que ejecutas. El quinto es un conversor de caracteres para lenguage batch, le faltan algunos carácteres como la ü Ü
Yo no considero que sirdarckcat explique mal, tal vez tu comprensión de lectura no es buena, sin embargo, puedes leer ss64.com/nt Sobre lo de usar funciones, una cosa es entender cómo funcionan y otra cosa es aprender a usarlas, que consiste simplemente en llamarlas, y pasarle los parámetros requeridos que generalmente se indican en la ayuda de la función.
|
|
|
14
|
Programación / Scripting / Re: Descubrimiento: Nueva forma de poner comentarios.
|
en: 14 Diciembre 2008, 02:11 am
|
Yo diría que el resultado es prácticamente igual, en el sentido de que no ejecutas, pero con tu método cargas cosas en memoria, aunque nunca las ejecutarás, pero de que las cargas, las cargas. En cuanto a los :: yo los considero verdaderos comentarios, pues cmd.exe no lee las líneas que comienzen con eso, y se supone que los comentarios, son comentarios, y no deberían mostrarse al ejecutar los scripts. Ejemplo :: dos puntos, uno arriba y otro abajo. rem remark comentario pause
En este ejemplo se muestra remark comentario, pero el "dos puntos, uno arriba y otro abajo." no, si se desea que no muestre con el rem al igual que con los :: se debe usar @rem pero aún no es igual a :: pues cmd.exe con rem lee la línea. Por ejemplo, esto funciona: pero esto no: pues considera que el cuerpo del if no tiene nada. Entonces concluyo que en programación existen similitudes, pero no son lo mismo si comenzamos a hilar finito. Al igual que cd /d consigue el efecto de pushd, pero con la diferencia de que pushd va guardando en memoria la ruta del directorio anterior, es decir, ocupa memoria, y también sirve para abrir rutas de red. En realidad los sinónimos no existen.
|
|
|
15
|
Programación / Scripting / Re: Descubrimiento: Nueva forma de poner comentarios.
|
en: 13 Diciembre 2008, 22:44 pm
|
Estuve analizando que ( no es un comentario propiamente tal, porque con esa orden comienzas a cargar lo que venga a continuación del ( y cuando encuentre el ) ejecutará lo que hayas puesto, pero como nunca llega a encontrar el ) y encuentra el carácter EOF, la ejecución no se realiza, pero si se cargó en memoria. Así también podríamos considerar comentarios cosas como estas: goto :eof estos son comentarios finales
if pepsi==cocacola ( esto son comentarios )
Lo del ( es lo mismo que: si guardas ese código en un bat, y colocas un salto de línea al final se ejecutará, pero, si el código lo terminas justo en el^ y lo guardas, no ejecutarás nada, en este caso, la ejecución de los datos se hace en el salto de línea, y con ^ indico que ingresaré más comandos, ahora si te fijas si le borras el ^ al se, coloques o no salto de línea en el archivo, lo ejecutarás. Saludos.
|
|
|
17
|
Programación / Scripting / Login.btm Script para 4DOS
|
en: 9 Diciembre 2008, 01:32 am
|
Les dejo mi primer script para 4dos. Lo que hace es simular una autenticación, al presionar las teclas no se muestra, al igual que en las autenticaciones en sistemas unix, unix like. Le limité el rango de teclas presionadas al abecedario, los numeros, y el backspace. Aquí pueden verlo en acción: http://4dos.net84.net/ (necesitan tener instalado java en su computador), al ingresar la palabra "carlos", se autentifica y se procede a ejecutar el juego del tic tac toe (otro script para 4dos, que no hice yo porque está muy bueno xD). Recomiendo presionar "Type key", para entrar en el foco de la pantalla. Login.btm @UNALIAS * @ECHO OFF @CLS
:INI GOSUB LOGIN PASSWORD IF NOT "carlos"=="%PASSWORD" ( ECHO AUTHENTIFICATION FAILED GOTO INI ) ECHO. TICTACTO.BTM GOTO :EOF
:LOGIN [VARIABLENAME] ::Login function for 4DOS 7.50 ::version:0.1 ::author:Carlos. ECHO. ECHOS ENTER PASSWORD: IF DEFINED CHAR UNSET CHAR IF DEFINED %VARIABLENAME UNSET %VARIABLENAME
DO WHILE NOT DEFINED CHAR INKEY /P /X /K"0123456789abcdefghijklmnopqrstuvwxyz[Bksp][Enter]" %%CHAR
IFF "%@ASCII[%CHAR]" EQ "8" THEN SET %VARIABLENAME=%@INSTR[0,%@EVAL[%@LEN[%[%VARIABLENAME]]-1],%[%VARIABLENAME]] ELSEIFF ("%CHAR" GE "A" .AND. "%CHAR" LE "Z") .OR. ("%CHAR" GE "0" .AND. "%CHAR" LE "9") THEN SET %VARIABLENAME=%@INSERT[%@LEN[%[%VARIABLENAME]],%CHAR,%[%VARIABLENAME]] ELSE LEAVE ENDIFF UNSET CHAR ENDDO IF NOT DEFINED %VARIABLENAME GOTO LOGIN RETURN
|
|
|
18
|
Programación / Scripting / Re: El poder del ocio :D
|
en: 9 Diciembre 2008, 00:11 am
|
MxPower, ahora tu reloj muestra el día de la semana. @echo off ::Version 2 modificada por Carlos mode con cols=49 mode con lines=16 color 0a goto HORA1
REM ---------------------------------------------------------------------------
:HORA1 cls call:dia call:getTime title %hour%:%minute% if %hour% lss 10 (set H1=0) else (set H1=%hour:~0,1%) if %H1%==0 (goto UHOR-0) if %H1%==1 (goto UHOR-1) if %H1%==2 (goto UHOR-2)
:UHOR-0 set "UNOHRU= _ " set "DOSHRU=³ ³" set "TREHRU=³_³" goto HORA2
:UHOR-1 set "UNOHRU= " set "DOSHRU= ³ " set "TREHRU= ³ " goto HORA2
:UHOR-2 set "UNOHRU= _ " set "DOSHRU= _³" set "TREHRU=³_ " goto HORA2
REM ---------------------------------------------------------------------------
:HORA2 call:getTime if %hour% lss 10 (set H2=%hour%) else (set H2=%hour:~1,1%) if %H2%==0 (goto DHOR-0) if %H2%==1 (goto DHOR-1) if %H2%==2 (goto DHOR-2) if %H2%==3 (goto DHOR-3) if %H2%==4 (goto DHOR-4) if %H2%==5 (goto DHOR-5) if %H2%==6 (goto DHOR-6) if %H2%==7 (goto DHOR-7) if %H2%==8 (goto DHOR-8) if %H2%==9 (goto DHOR-9)
:DHOR-0 set "UNOHRD= _ " set "DOSHRD=³ ³" set "TREHRD=³_³" goto MINU1
:DHOR-1 set "UNOHRD= " set "DOSHRD= ³ " set "TREHRD= ³ " goto MINU1
:DHOR-2 set "UNOHRD= _ " set "DOSHRD= _³" set "TREHRD=³_ " goto MINU1
:DHOR-3 set "UNOHRD= _ " set "DOSHRD= _³" set "TREHRD= _³" goto MINU1
:DHOR-4 set "UNOHRD= " set "DOSHRD=³_³" set "TREHRD= ³" goto MINU1
:DHOR-5 set "UNOHRD= _ " set "DOSHRD=³_ " set "TREHRD= _³" goto MINU1
:DHOR-6 set "UNOHRD= _ " set "DOSHRD=³_ " set "TREHRD=³_³" goto MINU1
:DHOR-7 set "UNOHRD= _ " set "DOSHRD= ³" set "TREHRD= ³" goto MINU1
:DHOR-8 set "UNOHRD= _ " set "DOSHRD=³_³" set "TREHRD=³_³" goto MINU1
:DHOR-9 set "UNOHRD= _ " set "DOSHRD=³_³" set "TREHRD= _³" goto MINU1
REM ---------------------------------------------------------------------------
:MINU1 call:getTime if %minute% lss 10 (set M1=0) else (set M1=%minute:~0,1%) if %M1%==0 (goto UMIN-0) if %M1%==1 (goto UMIN-1) if %M1%==2 (goto UMIN-2) if %M1%==3 (goto UMIN-3) if %M1%==4 (goto UMIN-4) if %M1%==5 (goto UMIN-5)
:UMIN-0 set "UNOMIU= _ " set "DOSMIU=³ ³" set "TREMIU=³_³" goto MINU2
:UMIN-1 set "UNOMIU= " set "DOSMIU= ³ " set "TREMIU= ³ " goto MINU2
:UMIN-2 set "UNOMIU= _ " set "DOSMIU= _³" set "TREMIU=³_ " goto MINU2
:UMIN-3 set "UNOMIU= _ " set "DOSMIU= _³" set "TREMIU= _³" goto MINU2
:UMIN-4 set "UNOMIU= " set "DOSMIU=³_³" set "TREMIU= ³" goto MINU2
:UMIN-5 set "UNOMIU= _ " set "DOSMIU=³_ " set "TREMIU= _³" goto MINU2
REM ---------------------------------------------------------------------------
:MINU2 call:getTime if %minute% lss 10 (set M2=%minute%) else (set M2=%minute:~1,1%) if %M2%==0 (goto DMIN-0) if %M2%==1 (goto DMIN-1) if %M2%==2 (goto DMIN-2) if %M2%==3 (goto DMIN-3) if %M2%==4 (goto DMIN-4) if %M2%==5 (goto DMIN-5) if %M2%==6 (goto DMIN-6) if %M2%==7 (goto DMIN-7) if %M2%==8 (goto DMIN-8) if %M2%==9 (goto DMIN-9)
:DMIN-0 set "UNOMID= _ " set "DOSMID=³ ³" set "TREMID=³_³" goto FECHA
:DMIN-1 set "UNOMID= " set "DOSMID= ³ " set "TREMID= ³ " goto FECHA
:DMIN-2 set "UNOMID= _ " set "DOSMID= _³" set "TREMID=³_ " goto FECHA
:DMIN-3 set "UNOMID= _ " set "DOSMID= _³" set "TREMID= _³" goto FECHA
:DMIN-4 set "UNOMID= " set "DOSMID=³_³" set "TREMID= ³" goto FECHA
:DMIN-5 set "UNOMID= _ " set "DOSMID=³_ " set "TREMID= _³" goto FECHA
:DMIN-6 set "UNOMID= _ " set "DOSMID=³_ " set "TREMID=³_³" goto FECHA
:DMIN-7 set "UNOMID= _ " set "DOSMID= ³" set "TREMID= ³" goto FECHA
:DMIN-8 set "UNOMID= _ " set "DOSMID=³_³" set "TREMID=³_³" goto FECHA
:DMIN-9 set "UNOMID= _ " set "DOSMID=³_³" set "TREMID= _³" goto FECHA
REM ---------------------------------------------------------------------------
:FECHA call:getDate if %day% lss 10 (set DIA=0%day%) else (set DIA=%day%) set MES=%month% set ANO=%year% goto DEFMES
:DEFMES if %MES%==1 (set "MFP= Enero ") if %MES%==2 (set "MFP= Febrero ") if %MES%==3 (set "MFP= Marzo ") if %MES%==4 (set "MFP= Abril ") if %MES%==5 (set "MFP= Mayo ") if %MES%==6 (set "MFP= Junio ") if %MES%==7 (set "MFP= Julio ") if %MES%==8 (set "MFP= Agosto ") if %MES%==9 (set "MFP=Septiembre") if %MES%==10 (set "MFP= Octubre ") if %MES%==11 (set "MFP=Noviembre ") if %MES%==12 (set "MFP=Diciembre ")
:RELOJ echo. echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º²²²²²²²²²²±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±²²²²²²²²²²±º echo º²MxPower²²±³ %UNOHRU% %UNOHRD% %UNOMIU% %UNOMID% ³±²²²²²²²²²²±º echo º²²²²²²²²²²±³ %DOSHRU% %DOSHRD% . %DOSMIU% %DOSMID% ³±²²²²²²²²²²±º echo º²²²²²²²²²²±³ %TREHRU% %TREHRD% . %TREMIU% %TREMID% ³±²²²²²²²²²²±º echo º²²²²²²²²²²±³ ³±²²²²²²²²²²±º echo º²²²²²²²²²²±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±²²²²²²²²²²±º echo º²²²²²²²²²²±±±±±±±±±±±±±±±±±±±±±±±±²²²²²²²²²²±º echo º²²²²²°ÚÄÄÄ¿±°ÚÄÄ¿±°ÚÄÄÄÄÄÄÄÄÄÄ¿±°ÚÄÄÄÄ¿±²²²²±º echo º²²²²²°³%DIASEMANA:~0,3%³±°³%DIA%³±°³%MFP%³±°³%ANO%³±²²²²±º echo º²²²²²°ÀÄÄÄÙ±°ÀÄÄÙ±°ÀÄÄÄÄÄÄÄÄÄÄÙ±°ÀÄÄÄÄÙ±²²²²±º echo º±±±±²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±±±±º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo ÀÄÄÄÄÄÙ ÀÄÄÄÄÄÙ for /f "delims=:,-/ tokens=1-2,5-7" %%a in ("%time%-%date%") do set th1=%%a%%b%%c%%d%%e :upd for /f "delims=:,-/ tokens=1-2,5-7" %%a in ("%time%-%date%") do set th2=%%a%%b%%c%%d%%e if not %th1%==%th2% (goto HORA1) else (goto upd)
::getDate-- crea 3 variables conteniendo el dia, el mes y el año : %%day%% %%month%% %%year%% ::Version: 1.1 ::$author: Carlos :getDate if [%1]==[] (for /f "tokens=1-3 delims=-/" %%a in ("%date%") do (call :getDate %%a %%b %%c)) if not [%1]==[] ( set /a day=1%1-100 set /a month=1%2-100 set /a year=%3 ) goto:eof
::getTime-- crea 3 variables conteniendo la hora, el minuto y el segundo : %%hour%% %%minute%% %%second%% ::Version: 1.0 ::$author: Carlos :getTime if [%1]==[] (for /f "tokens=1-3 delims=:," %%a in ("%time%") do (call :getTime %%a %%b %%c)) if not [%1]==[] ( set /a hour=%1 set /a minute=1%2-100 set /a second=1%3-100 ) goto:eof
:dia ::dia -- muestra el nombre del dia actual. ::Version: 1.6 ::$author: Carlos call:getDate if [%year%] geq [1900] (if [%year%] leq [1999] (set marcador=3)) if [%year%] geq [2000] (if [%year%] leq [2099] (set marcador=2)) if [%year:~2,1%]==[0] (set /a year="%year:~3,3%") else (set /a year="%year:~2,3%") set /a doomsday="((%year% / 12) + (%year% %% 12) + ((%year% %% 12) / 4)) %% 7 + %marcador%" call :bisiesto %year% if /i [%bisiesto%]==[false] ( set doomsday_1=17 set doomsday_2=14 ) else ( set doomsday_1=18 set doomsday_2=15 ) set doomsday_3=14 set doomsday_4=18 set doomsday_5=16 set doomsday_6=13 set doomsday_7=18 set doomsday_8=15 set doomsday_9=12 set doomsday_10=17 set doomsday_11=14 set doomsday_12=12 call :set /a key=%%doomsday_%month%%% set /a dia=%doomsday% if %day% gtr %key% ( set /a diferencia="%day% - %key%" set op=+ ) else ( if %day% lss %key% ( set /a diferencia="%key% - %day%" set op=- ) else ( set /a diferencia=1 set op=*) ) set /a cont=0 :loopp set /a cont +=1 set /a dia="%dia% %op% 1" if %dia% equ 8 (set /a dia=1) if %dia% equ 0 (set /a dia=7) if %cont% neq %diferencia% (goto loopp) if [%dia%]==[1] (set diaSemana=Lunes) else ( if [%dia%]==[2] (set diaSemana=Martes) else ( if [%dia%]==[3] (set diaSemana=Miercoles) else ( if [%dia%]==[4] (set diaSemana=Jueves) else ( if [%dia%]==[5] (set diaSemana=Viernes) else ( if [%dia%]==[6] (set diaSemana=Sabado) else ( if [%dia%]==[7] (set diaSemana=Domingo) )))))) goto :eof
:set set %* goto :eof
:bisiesto ::$author: Carlos set bisiesto=false set /a mod1="%1 %% 4" set /a mod2="%1 %% 100" set /a mod3="%1 %% 400" if [%mod1%]==[0] (if not [%mod2%]==[0] (set bisiesto=true)) if [%mod3%]==[0] (set bisiesto=true) goto :eof
|
|
|
|
|
|
|