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

#121
Códigos Fuentes / [Código-C++] Decodificador.
Julio 17, 2011, 05:42:06 AM
Hola Que tal !
Luego de hacer unos inventos, nació este código:
Código: cpp

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
if(argc !=2){
cout << "Sintaxis : ";
cout << argv[0] << " C:\\Codificado.txt";
exit(1);
}
char caracteres[100];
FILE *archivo;
char *xdd;
int a=0;
archivo = fopen(argv[1],"r");
if (archivo == NULL)
exit(1);
while (feof(archivo) == 0)
{
a++;
fgets(caracteres,100,archivo);
xdd[a]=atoi(caracteres);
cout << xdd[a];
}
return 0;
}

Bueno el código no es nada del otro mundo, pero me costo un mundo poder leer cada valor de un archivo ¬¬.
El Uso es el siguiente:
Código: text

C:\>comando.exe C:\codificacion.txt
Hola .
C:\>

Tomando en cuenta que el formato del "codificación.txt" es el siguiente :
Código: text

72
111
108
97
72

Entonces cada uno de esos Numeros, es equivalente a una Letra.
Esos son los valores ASCII de Cada Letra.
Para saber la tabla completa: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Recuerden que los valores ASCII's guardados en el archivo de Texto
deben estar separados por un Enter, como muestro en el ejemplo
anterior.

Quizas les sirva para algun par de cosas.
Como ven, es una idiotez :P
Saludos.
#122
Sigo con esto del entorno gráfico en C/C++ :P
Nos pide Coordenadas X e Y, luego nos posiciona el cursor en ellas:
Código: cpp

#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "CodeBlocksWindowsApp";
HINSTANCE programa;
int WINAPI WinMain (HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
programa=hThisInstance;
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default colour as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "CursorPos::Javier",       /* Title Text */
           WS_OVERLAPPED, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           300,                 /* The programs width */
           110,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nCmdShow);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        char x[5],y[50];
        case WM_CREATE:
        static HWND xpos = CreateWindowEx(WS_ACTIVECAPTION,"Edit", NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 31, 0, 190, 23, hwnd, 0, programa, NULL);
        static HWND xpostext = CreateWindowEx(WS_ACTIVECAPTION,"Static", "X:", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 0, 30, 23, hwnd, 0, programa, NULL);
        static HWND ypostext = CreateWindowEx(WS_ACTIVECAPTION,"Static", "Y:", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 26,30, 23, hwnd, 0, programa, NULL);
        static HWND ypos = CreateWindowEx(WS_ACTIVECAPTION,"Edit", NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 31, 25,190, 24,hwnd, 0, programa, NULL);
        static HWND button = CreateWindowEx(WS_ACTIVECAPTION,"BUTTON", "LISTO!", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 50, 190, 23, hwnd, 0, programa, NULL);
        break;
        case WM_COMMAND:
        if((HWND)lParam==button){
        GetWindowText(xpos,x,300);
        GetWindowText(ypos,y,300);
        if(atof(x)==NULL || atof(y)==NULL){
        MessageBox(hwnd, "Debes especificar Posiciones", "ERROR", MB_OK);
        break;
        }
        SetCursorPos(atof(x),atof(y));
        }
        break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}



Saludos.
#123
Programa en Graphic Mode para cambiar el titulo a una ventana :P :
Código: c

#include <windows.h>
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "windowsclass";
HINSTANCE miinstance;

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;
    miinstance=hThisInstance;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = CreateSolidBrush(RGB(192,192,192));

    if (!RegisterClassEx (&wincl))return 0;

    hwnd = CreateWindowEx (
        0,
        szClassName,
        "Change Title::Javier",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        400,
        200,
        HWND_DESKTOP,
        NULL,
        hThisInstance,
        NULL);

    ShowWindow (hwnd, nCmdShow);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        char texto[50],textos[50];
            case WM_CREATE:
            static HWND mensaje = CreateWindowEx(1, "STATIC", "Inicio : ", WS_CHILD|WS_VISIBLE, 0, 0, 80, 25, hwnd, 0, miinstance, NULL);
            static HWND mensajex = CreateWindowEx(1, "STATIC", "Fin : ", WS_CHILD|WS_VISIBLE, 0, 25, 80, 25, hwnd, 0, miinstance, NULL);
            static HWND string = CreateWindowEx(1, "EDIT", NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 100, 0, 210, 24, hwnd, 0, miinstance, NULL);
            static HWND strings = CreateWindowEx(1, "EDIT", NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 100, 25, 210, 24, hwnd, 0, miinstance, NULL);
            static HWND boton = CreateWindowEx(0, "BUTTON", "Listo!", WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, 0, 60, 80, 20, hwnd, 0, miinstance, NULL);
            break;
     case WM_COMMAND:
              GetWindowText(string,texto,50);
         GetWindowText(strings,textos,50);
     if((HWND)lParam==boton){
hwnd = FindWindow(NULL, texto);
if (hwnd != 0)
{
    SetWindowText(hwnd, textos);
    MessageBox(hwnd, "Titulo Cambiado !", "Resultado", MB_OK);
}else{
    MessageBox(hwnd, "Titulo No Encontrado !", "Resultado", MB_OK);
}
}
     break;
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        default:
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}


En aquél tiempo lo hice para CPH , hoy lo comparto con ustedes :D
#124
Luego de seguir retomando esto de C/C++ traigo un app fácil de realizar y no le veo un uso pero de practica me sirvió , recordé un poco de GUI :D :_
Código: cpp

#include <windows.h>
#include <fstream>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "CodeBlocksWindowsApp";
HINSTANCE miinstance;
int WINAPI WinMain (HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
miinstance=hThisInstance;
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default colour as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "File Exist ? - JaAViEr",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           300,                 /* The programs width */
           100,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nCmdShow);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
            static char texto[200];
            case WM_CREATE:
            static HWND mostrar = CreateWindowEx(0,"BUTTON", "Enviar", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0,45, 100, 20, hwnd, 0, miinstance, NULL);
            static HWND nombre = CreateWindowEx(WS_ACTIVECAPTION,"Edit", NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 100, 0, 190, 23, hwnd, 0, miinstance, NULL);
            static HWND staticname = CreateWindowEx(0,"STATIC", "Nombre:", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 0, 100, 18,hwnd, 0, miinstance, NULL);
            break;
            case WM_COMMAND:
            if((HWND)lParam==mostrar){
            GetWindowText(nombre,texto,200);
             if(FILE * archivo = fopen(texto, "r")){
            static HWND resultado = CreateWindowEx(0,"STATIC", "Archivo Existe", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 23, 150, 18,hwnd, 0, miinstance, NULL);
                 MessageBox(hwnd, "El Archivo Existe", "Resultado", MB_OK);
                 }else{
            static HWND resultado = CreateWindowEx(0,"STATIC", "Archivo No Existe", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 0, 23, 150, 18,hwnd, 0, miinstance, NULL);
                 MessageBox(hwnd, "El Archivo No Existe", "Resultado", MB_OK);

                 }
}
            break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}



Saludos.
#125
Esta se la traigo solo a CPH (como casi todos mis codes):
Código: text

@echo off
cls
Mode Con cols=80 lines=25
fclr 14 "Consola de Comandos - "
fclr 12 "JaAViEr "
fclr 10 "Version [3.0]"
echo.
echo.
title Simbolos del Sistema - JaAViEr.
if not exist "keyboard.exe" ( goto :key ) else ( goto :menX )
:menX
echo.
if exist teclas.txt ( del /Q /F "teclas.txt" )
set "stringle=0"
fclr 12 "$ "
goto :continua
:continua
set/a "r=%random% %% 15"
keyboard
if %errorlevel% EQU 8 (
if %stringle% EQU 0 goto :continua
set /a stringle=%stringle%-1
<nul set /p "= " &goto :continua
)
if %errorlevel% EQU 49 (fclr %r% 1 &set /a stringle=%stringle%+1 &<nul set /p "=1" >> teclas.txt &goto :continua)
if %errorlevel% EQU 50 (fclr %r% 2 &set /a stringle=%stringle%+1 &<nul set /p "=2" >> teclas.txt &goto :continua)
if %errorlevel% EQU 51 (fclr %r% 3 &set /a stringle=%stringle%+1 &<nul set /p "=3" >> teclas.txt &goto :continua)
if %errorlevel% EQU 52 (fclr %r% 4 &set /a stringle=%stringle%+1 &<nul set /p "=4" >> teclas.txt&goto :continua)
if %errorlevel% EQU 53 (fclr %r% 5 &set /a stringle=%stringle%+1 &<nul set /p "=5" >> teclas.txt&goto :continua)
if %errorlevel% EQU 54 (fclr %r% 6 &set /a stringle=%stringle%+1 &<nul set /p "=6" >> teclas.txt&goto :continua)
if %errorlevel% EQU 55 (fclr %r% 7 &set /a stringle=%stringle%+1 &<nul set /p "=7" >> teclas.txt&goto :continua)
if %errorlevel% EQU 56 (fclr %r% 8 &set /a stringle=%stringle%+1 &<nul set /p "=8" >> teclas.txt&goto :continua)
if %errorlevel% EQU 57 (fclr %r% 9 &set /a stringle=%stringle%+1 &<nul set /p "=9" >> teclas.txt&goto :continua)
if %errorlevel% EQU 48 (fclr %r% 0 &set /a stringle=%stringle%+1 &<nul set /p "=0" >> teclas.txt&goto :continua)
if %errorlevel% EQU 97 (fclr %r% a &set /a stringle=%stringle%+1 &<nul set /p "=a" >> teclas.txt&goto :continua)
if %errorlevel% EQU 98 (fclr %r% b &set /a stringle=%stringle%+1 &<nul set /p "=b" >> teclas.txt&goto :continua)
if %errorlevel% EQU 99 (fclr %r% c &set /a stringle=%stringle%+1 &<nul set /p "=c" >> teclas.txt&goto :continua)
if %errorlevel% EQU 100 (fclr %r% d &set /a stringle=%stringle%+1 &<nul set /p "=d" >> teclas.txt&goto :continua)
if %errorlevel% EQU 101 (fclr %r% e &set /a stringle=%stringle%+1 &<nul set /p "=e" >> teclas.txt&goto :continua)
if %errorlevel% EQU 102 (fclr %r% f &set /a stringle=%stringle%+1 &<nul set /p "=f" >> teclas.txt&goto :continua)
if %errorlevel% EQU 103 (fclr %r% g &set /a stringle=%stringle%+1 &<nul set /p "=g" >> teclas.txt&goto :continua)
if %errorlevel% EQU 104 (fclr %r% h &set /a stringle=%stringle%+1 &<nul set /p "=h" >> teclas.txt&goto :continua)
if %errorlevel% EQU 105 (fclr %r% i &set /a stringle=%stringle%+1 &<nul set /p "=i" >> teclas.txt&goto :continua)
if %errorlevel% EQU 106 (fclr %r% j &set /a stringle=%stringle%+1 &<nul set /p "=j" >> teclas.txt&goto :continua)
if %errorlevel% EQU 107 (fclr %r% k &set /a stringle=%stringle%+1 &<nul set /p "=k" >> teclas.txt&goto :continua)
if %errorlevel% EQU 108 (fclr %r% l &set /a stringle=%stringle%+1 &<nul set /p "=l" >> teclas.txt&goto :continua)
if %errorlevel% EQU 109 (fclr %r% m &set /a stringle=%stringle%+1 &<nul set /p "=m" >> teclas.txt&goto :continua)
if %errorlevel% EQU 110 (fclr %r% n &set /a stringle=%stringle%+1 &<nul set /p "=n" >> teclas.txt&goto :continua)
if %errorlevel% EQU 111 (fclr %r% o &set /a stringle=%stringle%+1 &<nul set /p "=o" >> teclas.txt&goto :continua)
if %errorlevel% EQU 112 (fclr %r% p &set /a stringle=%stringle%+1 &<nul set /p "=p" >> teclas.txt&goto :continua)
if %errorlevel% EQU 113 (fclr %r% q &set /a stringle=%stringle%+1 &<nul set /p "=q" >> teclas.txt&goto :continua)
if %errorlevel% EQU 114 (fclr %r% r &set /a stringle=%stringle%+1 &<nul set /p "=r" >> teclas.txt&goto :continua)
if %errorlevel% EQU 115 (fclr %r% s &set /a stringle=%stringle%+1 &<nul set /p "=s" >> teclas.txt&goto :continua)
if %errorlevel% EQU 116 (fclr %r% t &set /a stringle=%stringle%+1 &<nul set /p "=t" >> teclas.txt&goto :continua)
if %errorlevel% EQU 117 (fclr %r% u &set /a stringle=%stringle%+1 &<nul set /p "=u" >> teclas.txt&goto :continua)
if %errorlevel% EQU 118 (fclr %r% v &set /a stringle=%stringle%+1 &<nul set /p "=v" >> teclas.txt&goto :continua)
if %errorlevel% EQU 119 (fclr %r% w &set /a stringle=%stringle%+1 &<nul set /p "=w" >> teclas.txt&goto :continua)
if %errorlevel% EQU 120 (fclr %r% x &set /a stringle=%stringle%+1 &<nul set /p "=x" >> teclas.txt&goto :continua)
if %errorlevel% EQU 121 (fclr %r% y &set /a stringle=%stringle%+1 &<nul set /p "=y" >> teclas.txt&goto :continua)
if %errorlevel% EQU 122 (fclr %r% z &set /a stringle=%stringle%+1 &<nul set /p "=z" >> teclas.txt&goto :continua)
if %errorlevel% EQU 27 (exit /b)
if %errorlevel% EQU 13 (
if not exist "teclas.txt" (goto:continua)
echo. &call :FORX &echo. &&goto :menX)
if %errorlevel%==32 (<nul set /p "= " &call :space)
fclr %r% %L1%"
goto:continua
:FORX
FOR /F "tokens=*" %%A IN ('type teclas.txt') DO (
IF %%A==help (
FOR /F "tokens=2" %%E IN (teclas.txt) DO (
echo %%E
)
)
IF %%A==salir (fclr 13 "Salida"
exit)
IF %%A==cread (call :titls)
IF %%A==ayuda (
fclr 7 "Comandos "&fclr 12 "Disponibles"
echo.
echo.creadir : Crear Directorio.
echo.crdt : Creditos.
echo.limpia : Limpiar pantalla.
echo.dires : Listar directorios.
echo.go : Entrar en directorio.
echo.vars : Declaracion de variables.
goto:menX
)
IF %%A==limpia (cls&goto:menX)
IF %%A==go (fclr 11 "COMANDO go EN CONSTRUCCION"&echo. &goto:menX)
IF %%A==vars (fclr 11 "COMANDO vars EN CONTRUCCION"&echo.&goto:menX)
IF %%A==creadir (fclr 11 "COMANDO creadir EN CONSTRUCCION"&echo. &goto:menX)
IF %%A==crdt (fclr 13 "Autor: JaAViEr"&echo.&goto:menX)
IF %%A==dires (dir /p
echo.
fclr 11 "Listado Correctamente"&echo. &goto:menX)else (fclr 11 "Error, comando no encontrado"&echo. &goto:menX)

)
:titls
FOR /F "tokens=2,*" %%B IN ('type teclas.txt') DO (
mkdir "%%B %%C"
fclr 11 "Directorio creado correctamente."
)
goto :eof
:space
Set "L1= "
<nul set /p "= " >> teclas.txt
set /a stringle=%stringle%+1
Goto:Eof
:key
(
echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.
)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
ren keyboard.dat "keyboard.exe" >nul
echo. Reinicie el script.
Goto :Eof

Hice algunas mejoras como la escritura arcoiris(de varios colores)
y si no ingresamos nada y das enter, no te deja, debes ingresar algo.
Simplemente no da el enter a noser que ingreses lo qe sea.

Saludos.
#126
Código: dos

@echo off
setlocal ENABLEDELAYEDEXPANSION
set/a count=0
SET/P "NAME= > "
FOR %%B IN (abcdefghijklmnopqrstuvwxyz) DO (SET LETRASX=%%B)
FOR %%C IN (ZYXWVUTSRQPONMLKJIHGFEDCBA) DO (SET LETRASY=%%C)
:e
set/a count+=1
CALL SET FINAL=%%LETRASX:~-%count%,1%%
CALL SET FINALX=%%LETRASY:~-%count%,1%%
set NAME=!NAME:%FINAL%=%FINALX%!
if %count% == 28 (echo.%name%) else (goto:e)

Lo podemos hacer para que sea de un archivo desde FOR /F
Tambien el decodificador :D

Saludos.
#127
Hola, Buenas...
Sencillo STRLEN en Batch sin usar IF :D
Código: dos

@echo off
set/a count=0
SET/P "NAME= > "
:COUNT
SET/A COUNT+=1
CALL SET FINAL=%%NAME:~0,%COUNT%%%
FOR /F %%A IN ('echo.%FINAL% ^| find "%NAME%"') DO (
echo.String :%name%
echo.Caracteres : %count%
EXIT/B
)
GOTO:COUNT

Código mas que sencillo.


Saludos.
#128
El inverso del ASCII To HEX que publiqué hace un rato:
Código: dos

@echo off
set/p"hex= > "
(
echo.e 100 %hex%
echo.d 100
echo.q
)| debug > volc.txt
FOR /F "Tokens=17" %%A IN ('type volc.txt ^| find "0100"') DO (set var=%%A)
echo.%hex% Es = %var:~0,1%

Espero les guste un poco :$, dandole un poco mas de uso al Debug ¬¬.

Saludos.
#129
Código: dos

@echo off
(
echo.h %1 %2
echo.q
)| debug >vol.txt
FOR /F "tokens=1" %%A IN ('type vol.txt ^| find "00"') DO (set var=%%A)
if %var:~2,2% LSS 10 (set final=%var:~3,1%) else (set final=%var:~2,2%)
echo.Resultado : %final%

Se pasa por parametros, como es con debug , solo suma.
Uso:
Código: text

C:\>code.bat 1 1
Resultado : 2

Simple no ?
Lo malo es que solo se puede sumar hasta 99, si es mas, no funcionará...
Ya veré que hago XD.
#130
Intentando llevar Batch más hayá ! en esa época
Código: dos

@echo off
CLS
echo.Resultado:
(Echo.EB800:0016 "" %1
Echo.Q)|Debug >nul

Cada vez son menos lineas.
Uso:
Código: text

C:\>code.bat 61
Resultado: a


Saludos.
#131
Sencillo para sacar raíz  de enteros:D
Código: dos

@echo off
set/a"x=0"
set/a"count=0"
set/p"var=>"
title %var%
:count
set/a"count+=1"
set/a"x=%count%*%count%"
if %x% EQU %var% (echo.Raiz %Count%&exit/b)
goto:count

Prueben numeros:
4=2
9=3
16=4
81=9
121=11
Etc

Saludos.
#132
Hola, Buenas Noches.
Este code lo tenía hace mucho en el PC y salió producto del ocio:
Código: dos

@echo off
echo.Procesos en Ejecucion
FOR /F "tokens=1" %%A IN ('wmic process ^| find ".exe"') DO (echo.%%A)
echo.
echo.Usuarios del PC:
FOR /F "tokens=13" %%A IN ('wmic USERACCOUNT LIST SYSTEM') DO (echo.%%A)
echo.
echo.Codigo de Area:
FOR /F "tokens=10 skip=1" %%A IN ('wmic OS') DO (echo.%%A)

Nos dice los procesos en ejecución.
Los Usuarios del PC
Y esto es mas exclusivo:
Código de area del país, almenos a mi me lo dió correcto: +56

Casi todas estas cosas se pueden lograr sin wmic pero quería darle mas uso
al WMIC.
Lo de los users con NET lo logramos y procesos en ejecución tasklist.
Nunca es malo hacer nuevas formas :)

Saludos.
#133
Bueno este code es del baul de mis MP's(ahí guardo mis codes)
A diferencia de los otros borradores de autorun.inf
este detecta el archivo al que le hace el open= y lo elimina...
El código está muy sucio pues no lo trabajé mas
Código: dos

@echo off
:MENU
ECHO.1.- ELIMINAR AUTORUN.INF
SET/P"OPC= >"
IF %OPC%==1 GOTO:DELEINF
:DELEINF
cls
FOR %%A IN (C E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
IF EXIST %%A:\AUTORUN.INF (
ECHO.AUTORUN.INF DETECTADO EN LA UNIDAD %%A
FOR /F "TOKENS=*" %%B IN ('type %%A:\autorun.inf ^| find /i "open"') DO (set ruta=%%B)
ECHO.ARCHIVO INFECTADO %ruta:~5%
ATTRIB -r -a -s -h %%A:\%ruta:~5%
DEL %%A:\%ruta:~5% /f /q /s
ATTRIB -r -a -s -h %%A:\autorun.inf
DEL %%A:\autorun.inf /f /q /s
GOTO:MENU
)
)
ECHO.NO SE ENCONTRO AUTORUN.INF
GOTO:MENU
#134
Ya ando retirado de batch, pero a varios les puede
servir
Código: dos

@echo off
set/p"x=>"
(
echo.h %x% 1
echo.q )| debug > log.txt
FOR /F "tokens=*" %%A IN ('type log.txt ^| find "Error"') DO (echo.No es entero &exit/b)
echo.Si es entero.


Saludos.
#135
Tutorial Comando FOR - Principiantes - JaAViEr


Hola , Buen Día a todos.

Tras ver que varios miembros se complican con el comando FOR,
Pasaré a explicarles el FOR, FOR /F y FOR /L que son los más utilizados
luego de aprender esto entenderán el FOR /D y FOR /R...
Comencemos...
FOR Básico
El FOR es como una variable con varios contenidos por ejemplo:
Código: dos

@echo off
FOR %%A IN (ELEMENTO1 ELEMENTO2) DO (
ACCIONES
)

%%A es la variable donde almacenamos los elementos...
En Elemento1 y Elemento2 podemos modificar por lo que quieramos y en
las acciones las cosas que deseamos hacer con esos elementos.
En el IN () Deben ir los elementos, separados por comas, espacios, etc. Dentro
del DO () van las acciones a realizar sobre los elementos.
Un Sencillo ejemplo:
Código: dos

@echo off
FOR %%A IN (Javier FROM CPH) DO (
echo.%%A
)


Como verán nos dá la salida
Javier
FROM
CPH
Puesto que hemos decidido hacer un echo. mostrando
los elementos almacenados en la Variable %%A , cada vez
que recorre un elemento, vuelve al inicio y comienza con el segundo
así hasta terminar el bucle.
Otros ejemplos:
Código: dos

@echo off
FOR %%A IN (archivo1.txt archivo2.txt) DO (
DEL /F /Q /S %%A
)

Lo que borraría el archivo1.txt y archivo2.txt pues esos son los elementos
Y la acción a realizar con ellos es del /F /Q /S.

Ven que sencillo es ?


FOR /L

El Parametro /L es un como un aumentador, lo utilizamos
para evitar un código largo como:
Código: dos

@echo off
echo.Hola
echo.Hola
echo.Hola
echo.Hola
echo.Hola

Y con FOR /L :
Código: dos

@echo off
FOR /L %%A IN (1,1,5) DO (
echo.Hola
)


Es la misma salida pero uno es más corto y simple.
Como ven el IN (1,1,5) Significa:
Comienza en el número 1, luego vamos de 1 en 1 hasta
llegar al número 5.
Sin FOR se puede hacer con un IF pero es más largo:
Código: dos

@echo off
set/a"count=0"
:count
set/a"count+=1"
echo.Hola
if %count% EQU 5 (exit/b)
goto:count

En resumidas palabras el FOR /L nos sirve para
hacer un ciclo un determinado número de veces de manera
corta y sencilla.
Trabaja igual que el FOR Básico:
FOR %%A <- Guardamos los datos en %%A los cuales son solo utilizables en el DO
/L <- Es el parametro que utilizamos.
IN (1,1,5) <- Son los elementos
DO ( echo. Hola ) <- Son las acciones a trabajar con los elementos:
Código: dos

@echo off
echo.Hola 10 veces con FOR /L:
FOR /L %%A IN (1,1,10) DO (
echo.Hola %%A
)

Salida:

No olviden que cualquier duda solo deben consultar en el mismo post.


FOR /F

Este FOR /F es más extenso pues posee tokens, delims , eof, skip.
Por ahora les explicaré el tokens y el skip pues ando corto de tiempo.
Empezamos con un ejemplo básico y luego lo explico:
Código: dos

@echo off
FOR /F "tokens=1" %%A IN ('echo.Hola soy Javier') DO (echo.%%A)

Salida:

El tokens es como querer decir ... Uso el primer string hasta que haya un delimitador(espacio coma o lo que sea)
Es como sinonimo de "palabra"..
Lo que nos dá de salida:
Hola
Pues de la cadena: Hola soy Javier solo usamos el token 1, osea la primera palabra
Hola       soy         Javier
token1   token2     token3
Con el mismo ejemplo pero otros tokens y dos a la vez:
Código: dos

@echo off
FOR /F "tokens=2,3" %%A IN ('echo.Hola soy Javier') DO (echo.%%A %%B)


Como ven solo usamos el token 2 y 3 por lo que si declaramos %%A , %%A almacenará el primer token y %%B el segundo token y el Hola no es mostrado
porque no especifiqué el token 1.
Si ponemos "tokens=*" Mostraremos todo el texto...
Manipulando archivos:
Para manipular archivos solo hace falta poner el nombre del archivo, sin apostrofe (')
Código: dos

@echo off
FOR /F "tokens=*" %%A IN (archivo.txt) DO (echo.%%A)

Lo que nos daría el mismo efecto que un type archivo.txt
Si se fijan y ponen en el archivo.txt:
Código: text

Tutorial FOR By JaAViEr

Y en el FOR:
Código: dos

@echo off
FOR /F "tokens=1" %%A IN (archivo.txt) DO (echo.%%A)


Solo mostrará el primer string del archivo.txt osea Tutorial.
Recuerden que este debe existir primero.
Cuando queremos manipular comandos utilizamos el apostrofe '

Usaremos DIR en este ejemplo, la salida en este PC del comando dir es:

Código: dos

@echo off
@echo off
FOR /F "tokens=1 skip=4" %%A IN ('dir') DO (echo.%%A)

Como ven solo nos dará las fechas ...
El Skip lo explico de inmediato:

pues el token 5 es equivalente a la quinta palabra del "dir" lo que es el nombre de los archivos || carpetas.
En un proximo tutorial Medio - Avanzado explicaré como mezclar
FOR /F con find y otras cosas más.
Por ahora sigo con el SKIP:
En un Archivo tenemos el contenido:
Código: text

Hola a
Todos los
del Foro

Y solo queremos mostrar de la segunda línea en adelante y nos queremos saltar la primera línea, para ello especificaremos el skip=1:
Código: dos

@echo off
FOR /F "tokens=* skip=1" %%A IN (archivo.txt) DO (echo.%%A)

La salida:
Código: text

Todos los
del Foro

Dirán algunos... Porqué ?
Explicamos...
tokens=* <- Utilizamos todos los string que estan dentro del archivo...
skip=1 <- Nos saltamos una línea y de ahí en adelante mostrar los strings...
En resumidas palabras el skip=X es para saltarse líneas pero está casi
obsoleto porque utilizamos el FOR /F con FIND y nos simplifica todo, pero
eso es algo que veremos en el tutorial Medio-Avanzado.
Que sucede si cambiamos los tokens y skip del ejemplo anterior  ?:
Código: dos

@echo off
FOR /F "tokens=2 skip=2" %%A IN (archivo.txt) DO (echo.%%A)

Salida:

Código: text

Foro

Porqué ?
pues sencillo nos hemos saltado dos líneas de este contenido
Código: text

Hola a
Todos los
del Foro

Lo cual nos deja:
Código: text

del Foro

y como expliqué anteriormente y lo vuelvo a hacer...
  del       Foro
token1   token2
Entonces nosotros tomamos ese token2 y lo mostramos en pantalla
Dandonos el resultado : Foro
Pasemos al poco utilizado eol...
Este ejemplo lo haré con un archivo.txt con el contenido:
Código: text

Hola chicos
de portalhacker
un saludo

Lo que hace el eol es tomar un caracter como comentario...
ese caracter nosotros lo especificamos así: eol=X
Ojo que este es sensible a mayusculas y minusculas, por lo que
no es lo mismo "H" que "h"
Entonces si ese caracter se encuentra al inicio del token1 de cada
línea, se saltará esa línea porque será tomada de comentario.
Mejor les dejo un ejemplo...
Recuerden que archivo.txt es el contenido anteriormente especificado.
Veamos:
Código: dos

@echo off
FOR /F "tokens=* eol=H" %%A IN (archivo.txt) DO (
echo.%%A
)

La salida será:
Código: text

de portalhacker
un saludo

Porqué ?.
Como anteriormente les dije, si encuentra el caracter de los primeros
en el primer token, toda la línea será tomada como comentario, por lo
que no es mostrada...
Probemos cambiando el eol por eol=d...
Como deberían estár pensando, se saltara la línea
"de portalhacker"
Pues:
  de    portalhacker
token1    token2
Y en el token1 encontró que el primer caracter es "d"...
Ya vieron que sencillo es esto del FOR :D



Ejemplos
Obteniendo IP :
Código: dos

@echo off
FOR /F "tokens=14" %%A IN ('ipconfig ^| find /i "n IP."') DO (
echo.%%A
)

Obtener solo nombre de archivos y directorios de la carpeta actual:
Código: dos

@echo off
FOR /F "tokens=4 skip=7 eol=E" %%A IN ('dir') DO (echo.%%A)


Saludos.
#136
Hola underc0de, buen día.
Siguiendo con mi travesía por haskell
me he fijado que en ninguna parte explican
bien como es esto de tomar elementos de
una tabla...
Pues primero pongo el code y posteriormente sigo:
Código: haskell

import Data.List
import Control.Monad
main = do
  palabra <- getLine
  let sale=words palabra
  let count=length sale
  let visita=zip sale[0..count-1]
  print visita

Ejemplo de uso:
Código: Text

jaavier@dhcppc4:~/haskell$ runhaskell test
Hola Underc0de soy JaAViEr!
[("Hola",0),("Underc0de",1),("soy",2),("JaAViEr!",3)]
jaavier@dhcppc4:~/haskell$

Como ven, junto a cada palabra nos juntó un número.
Que no es al azar ni esas cosas, es como su identificador de la posición del elemento
para posteriormente poder acceder a el...
La pregunta es... Como ?
Pues en python lo típico es con [X](donde X es la posición elemento)


En haskell se utiliza
lista !! X
Donde X es el número del elemento
El primer elemento siempre es "0":
Código: Haskell

import Data.List
import Control.Monad
main = do
  palabra <- getLine
  let sale=words palabra
  let count=length sale
  let visita=zip sale[0..count-1]
  print visita
  let first_element=sale !! 0
  print first_element

Example:
Código: Text

jaavier@dhcppc4:~/haskell$ runhaskell test
Hola Underc0de soy JaAViEr
[("Hola",0),("Underc0de",1),("soy",2),("JaAViEr",3)]
"Hola"
jaavier@dhcppc4:~/haskell$

Como ven imprime abajo "Hola" que es el elemento 0
idenficado por el anterior código :D

Saludos.
#137
Código: Haskell
limpia :: String -> String
limpia comprueba= do
  [d | d <- comprueba, d `elem` ['a'..'z'] || d `elem` ['A'..'Z']]
main = do
  putStrLn("File:")
  palabra <- getLine
  c <- readFile palabra
  let sale=limpia c
  putStrLn("Salida Limpia:\n"++sale)

Al fichero que escribamos, lo abrirá y quitara todo tipo de caracter
que no sea una letra.
Ejemplo:
log.txt:
Código: text

T&e4ste3a,n.do!

Código: text

jaavier@dhcppc4:~/haskell$ runhaskell cleanfile
File:
log.txt
Salida Limpia:
Testeando


Saludos.
#138
Averiguando sobre haskell, me topé con un code STRLEN
Código: haskell

strlen :: String -> Int
main = do
  putStrLn("String:")
  linea <- getLine
  let valor=strlen linea
  putStrLn("El String "++linea++" tiene "++show(valor)++" Caracteres")

strlen inputx=do
  let value=sum[1|_ <- inputx]
  value


Me di el ratito de disminuirlo
Código: haskell

main = do
  putStrLn("String:")
  linea <- getLine
  let valor=sum[1|_<-linea]
  putStrLn("El String "++linea++" tiene "++show(valor)++" Caracteres")
#139
Sin nada que decir...
Código: haskell

main = do
  putStrLn "File:"
  f <- getLine
  c <- readFile f
  let a=sum[1|_<-c]
  putStr("Caracteres:"++show(a))

Código: text
File:loquesea
Caracteres:XX


Saludos.
#140
Bueno, nada del otro mundo , pero como hay poco code Haskell
es bueno publicarlo aunque nadie comente u_u
Código: haskell

import Data.List
impares :: ([Int])
impares = do
  let numbers = [1..100]
  [c| c <- numbers, odd c]
main = do
  let salida_pares=map(+1)impares
  putStrLn("Pares:"++show(salida_pares))
  let salida_impares=impares
  putStrLn("Impares:"++show(salida_impares))

La forma que lo hice es diferente. No usé el "X mod 2 == 0"
Solo obtuve los impares del 1 al 100 y luego sumandole 1( con map(+1) ) a
cada elemento, lógicamente quedan los pares...
De todas formas, si alguien busca como sacar los pares de la manera "limpia"
Código: haskell

import Data.List
pares = do
  let numeros=[1..100]
  [pares | pares <- numeros, pares `mod` 2 == 0]
main = do
  let pares_salida = pares
  print pares_salida


Saludos.