Mostrando las entradas con la etiqueta if. Mostrar todas las entradas
Mostrando las entradas con la etiqueta if. Mostrar todas las entradas

lunes, 19 de octubre de 2015

Borrado de caracter sobre texto plano (TXT)

Hola nuevamente!

Hoy les traigo un nuevo programa, el cual lo llamo "BMCTP". Su función es básicamente borrar un caracter específico dentro de un texto plano.

Se preguntarán el "por qué usar este programa" si se puede modificar manualmente un archivo txt. Bueno la respuesta es simple, este Script busca en todo el texto el caracter seleccionado y los borra, lo cual agiliza y automatiza la tarea.

Está diseñado para textos extensos, aunque cabe mencionar que entre mayor sea el tamaño del archivo más demorará en terminar. Por otro lado también hago mención de que el programa está en "Beta" por llamarlo de alguna manera. Obviamente puede tener errores o algún bug que de ser así agradecería que me lo hicieran saber o me corrigan el código.

Haré un listado rápido de lo que hace el programa:

1. - Activar el expansión de Setlocal
2. - Modificar el tamaño de la consola y añadir un título a la ventana
3. - Configurar la ruta (Path) del archivo a ser modificado (Default / Usuario)
4. - Consultar el nombre del archivo (Usuario)
5. - Crear un "Backup" o respaldo del archivo original antes de comenzar
6. - Consultar el caracter a ser eliminado del texto (Usuario)
7. - Crear el bucle con un For para leer línea por línea y eliminar el caracter
8. - Preguntar al usuario si desea ver el archivo final antes de cerrar el programa
9. - Muestra en pantalla las rutas donde se encuentra tanto al "Backup" como el archivo final
10. - Copia el archivo modificado a la carpeta asignada por el usuario
11. - Elimina el contenido de la carpeta en "Temp"
12. - Finaliza el Script


Como se puede apreciar el programa es bastante sencillo, pero simplifica la tarea de eliminar algún Guión, Punto, Coma, Letra, Espacio, Dos puntos, Punto y coma, de un texto plano que a veces es una tarea muy engorrosa.

Me despido enseñando una imagen con parte del código, el programa corriendo y por último un link para probar el Script.

Saludos!

Parte del código
Parte del código

BMCTP.bat
Consola con el programa funcionando


martes, 6 de enero de 2015

Palabro

Hoy quiero exponer mi nueva creación, Palabro, así le ha llamado la persona a quien se le ocurrió hacer un programa así, pero en Java (Si no mal recuero) y yo intenté hacer la copia en Bat.

No pude encontrar la página donde leí acerca de esto ya que fue hace mucho tiempo atrás.

Este programa aún no está terminado. Le faltan muchas cosas y tiene muchos errores aún, como por ejemplo que salgan excesivas palabras con sólo tres letras o que el programa se detengas inesperadamente.

Hasta ahora lo he programado para que el mínimo de letras por palabra sea 3 y el máximo sea 9.
A la vez he hecho que después de una vocal la siguiente letra sea una consonante y lo mismo ocurre si la letra anterior es consonante, le agrega la vocal.

Dejaré un par de imágenes y el código como está hasta ahora de Palabro.



lunes, 5 de enero de 2015

Matrix

Como dije, traje un programa hecho por mi basado en la Matrix, son 4 formas diferentes de que muestre letras de la A-Z y numeros del 0-9 aleatoriamente agregando algunos espacios para dar algo de "efecto".

También agrego de que en este programa no se repite el contenido completo de las lineas o columnas.

Esta Matrix la hice con diferentes velocidades y tamaños. Al principio del programa hace la pregunta de cuál velocidad quieres probar.

Como siempre dejaré el link bajo las imagenes para descargar y ver el código completo del archivo por lotes.

Parte del cógido donde muestra la primera forma de hacer una Matrix.







domingo, 4 de enero de 2015

Resultado de ejercicios

Resultados

Para empezar debo recalcar que la resolución de los ejercicios no se basan en sencilléz o eficacia, sino en mostrar el resultado pedido usando los comando básicos.

Dejare imágenes de cada ejercicio y bajo ellas un link con el archivo por lotes para que el que desee lo pueda probar y corroborar que funciona.

Si hay algo que no se entienda o no lo haya explicado y haya sido usado en algunos de estos resultados haz el favor de hacermelo saber para explicar o agregar el significado.

Número mayor entre dos
Número mayor entre dos.



Número menor entre tres
Número menor entre tres.


Número par entre cinco
Número par entre cinco.


Tabla de multiplicar de un número
Tabla de multiplicar de un número.


Mensaje de usuario
Mensaje de un usuario.


Pronto inventaré algunas cosas para compartilas en este blog. Me refiero a programas hechos por mi.
También veré la posibilidad de empezar a explicar y usar comandos de nivel intermedio.

viernes, 19 de diciembre de 2014

Ejercicios Simples

Con los comandos ya presentados podemos hacer un montón de cosas. Ahora jugaré un poco con ellos e inventaré algunas cosas, ¡a ver que tal sale!


Lo primero que se me vino a la mente son los ejercicios que nos hacen en informática cuando empiezas con Java. Son unos calculos matemático muy básico y a medida que avanzaos se les agrega más complejidad.

Partiré con la suma y resta:

   
        @Echo off
       
        REM Lo primero que se debe hacer para sumar o restar es crear una o más variables
        REM que guarden resultados o los dígitos a evaluar.
        REM El comando Set tiene permitido guardar y evaluar números enteros, hexadecimales y octales.
       
        Set numero_entero_1=128
        Set numero_entero_2=896
       
        REM Ahora necesitamos un comando que evalue y los sume.
        REM En este mismo comando "Set" tenemos un modificador ("/A") que nos permite hacer eso.
        REM Usaremos "Set /A" para realizar la evaluacón, pero la guardaremos en otra variable.
       
        Set /A suma=%numero_entero_1% + %numero_entero_2%
        Set /A resta=%numero_entero_1% - %numero_entero_2%
       

        REM Ya tenemos la suma y resta de 128 y 896, pero necesitamos un comando que los saque por pantalla.
        REM Aquí entra "Echo" y "Pause". Este último es para que la consola no se cierre luego de completar la acción.
       
        Echo La suma de %numero_entero_1% y %numero_entero_2% es : %suma%
        Echo. (Lo que hace "echo" aquí es un salto de línea, y solo poniendo un punto delante del comando lo hace)
        Echo La resta de %numero_entero_1% y %numero_entero_2% es: %resta%
        Pause
       
Para la multiplicación y división es lo mismo, pero encontramos una piedra de tope en la división ya que CMD trabaja sólo con números enteros.

        @Echo off
       
        REM Al igual que en el ejercicio anterior lo primero es crear las variables, pero esta vez harémos
        REM que el usuario ingrese los números a evaluar usando el modificador "/P" en Set.
       
        Set /P numero_entero_1=Ingresa el primero numero:
        Set /P numero_entero_2=Ingresa el segundo numero:
       
        REM Ahora los evaluamos usando "Set /A" nuevamente.
       
        Set /A multiplicacion=%numero_entero_1% * %numero_entero_2%
        Set /A division=%numero_entero_1% / %numero_entero_2%
       
        REM Nuevamente usaremos "Echo" para sacar los resultados en pantalla.
       
        Echo La multiplicacion de %numero_entero_1% y %numero_entero_2% es : %multiplicacion%
        Echo.
        Echo la division de %numero_entero_1% y %numero_entero_2% es : %division%
        Pause
       
    Nota: A causa de la limitación de CMD al dividir, éste sólo nos mostrará el valor entero.
        Ejemplo: "1000 / 14 = 74,42" y la consola nos mostrará "1000 / 14 = 74"
       
Existen algunas formas de hacer que se muestren algunos decimales por ejemplos esta:

        @Echo off
        MODE con cols=46 lines=20
        Title Division
        :Inicio
        Echo numero 1:
        Set /P num1=
        Set decimales=%num1%
        Echo numero 2:
        Set /P num2=
        Set decimales2=%num2%

        REM Desglosado
        Echo.
        Echo.

        Set /A entero=%num1%/%num2%
        Set /A decimales*=10000
        Set /A decimales2*=100
        Set /A decimal=%decimales%/%decimales2%
        For /F "tokens=* delims=%entero%" %%a IN ("%decimal%") DO (
        Set decimal2=%%a
        )
        Echo Entero=%entero%
        Echo Decimal=%decimal2%
        Echo.
        Echo
Resultado: %entero%,%decimal2%
       
    Nota: Esta forma funciona sólo con numeros enteros positivos. Además solo puede ser la division de un número mayor por uno menos.
          A base de esto se puede mejorar mucho el código. Simplemente lo que hace es "agrandar" los números para poder tener más dígitos positivos
          y así poder trabajar con ellos pasándolos a decimales.
         
Otros ejercicios sin evaluaciones matemáticas podrían ser relacionados al mismo sistema operativo:

        @Echo off & Title Buscador de objetos
        Setlocal enabledelayedexpansioin
        :Inicio
        Cls
        CD
%userprofile%
        For /D %%a IN (*) DO (Echo %%a)
        Echo --------------------- Directorios disponibles---------------------
        Echo.
        Echo.
        Echo
Escriba el directorio que desee recorrer:
        Set /P opcion=
        CD %opcion%
        If %errorlevel%==1 Goto Inicio
        Echo.
        Echo
Escriba la extension de el(los) archivo(s) a buscar:
        Set /P opcion2=
        Echo.
        Set
count=0
        For /R %%b IN (*.%opcion2%) DO (
        Set encontrado=%%b
        For /F "tokens=3-13 delims=\" %%c IN ("%%b") DO (
        Set encontrados=%%c   %%d   %%f   %%g   %%h   %%i   %%j   %%k   %%l 
        )
        Call:Funcion_1
        )
        Echo Total archivos encontrados:%count%
        Pause
        Goto
Inicio

        :Funcion_1
        Echo Encontrado: %encontrados%
        Set /A count=%count%+1
       
Ahora al revez, primero digo lo que el programa debe mostrar y luego doy el código que lo realiza.
       
        -Programa que lea dos números ingresados por el usuario y muestre por pantalla el mayor de ambos.
        -Programa que lea tres números ingresados por el usuario y muestre el menor de los tres.
        -Programa que lea 5 números ingresados por el usuario y muestre los que son pares.
        -Programa que muestra la tabla de multiplicar hasta 10 de un número ingresado por el usuario.
        -Programa que muestre por pantalla el mensaje escrito por el usuario con la respectiva fecha y hora.

       
        NOTA: Todo se puede realizar con los comandos básico ya mencionados.
              ¡Respuestas en el próximo post!

lunes, 15 de diciembre de 2014

Introducción a programar en Bacth

Comandos básicos en Batch



Echo:
    El comando más conocido dentro del área de la consola de Windows es "echo" y su función es muy simple, imprimir en algo en la consola.

    Se me pueden dar otros usos, como por ejemplo Exportar un resultado a un archivo de texto.


Su sintáxis es la siguiente:
    Echo ["texto",%variable%]
    Echo off: Deshabilita el eco en la consola evitando mostrar el proceso de cada comando.
Para guardar el contenido en un texto plano se usa la siguiente sintáxis:
    Echo hola, ¿como estas?>[ruta,nombre archivo,extension(opcional)]

Ejemplos:
    Echo Esto es un texto normal.
    Echo La hora actual es: %time%.
    Echo Resultado de una variable>%userprofile%\Resultado.txt
  -------------------------------------------------------------------------------------------------------------------------------------

Set:
    El comando "set" es otro comando muy utilizado y es vital para programar en Batch.
    Su función es guardar algo (variable, numeros, caracteres, etc) en una variable, la cual podemos usar, modificar o eliminar a nuestro antojo.
    El comando "set" posee dos modificadores: "/A" que se usa para realizar evaluaciones matemáticas como sumar, restar, etc ; "/P" que se ultiliza para el ingreso de texto mediante el teclado.

Su sintáxis es la siguiente:
    Set [modificador, nombre de variable,signo "=", valor de variable]
   
Ejemplos:
    Set NumDeManzanas=1
    Set /A NumDeManzanas=%NumDeManzanas%+1 (El restultado es 2)
    Set /P Resultado=Cuantas manzanas hay?:

    NOTA: Cuando se usa el modificador "/P" es opcional agregar un texto luego de la variable.
        Ejemplo: Set /P Resultado=
             Set /P Resultado=[texto opcional]
    Ambas formas funcionan sin dar error.

-------------------------------------------------------------------------------------------------------------------------------------

If:
    El comando "If" es utilizado para realizar comparaciones, ya sea de variables, numeros o caracteres.
    A este comando se le pueden añadir varias funciones por medios de modificadores y es muy completo.
    "If" es utlizado también para la comprobación de archivos lo cual es muy útil al momento de programar algunas cosas.

    Los modificadores al comando son: "/I" que compara omitiendo mayúsculas y minúsculas; "NOT" hace que funcione el comando si la condición es falsa; "EXIST" Comprueba la existencia de un archivo.
   
    Operadores de comparación:
                EQU - igual (Se puede utilizar también "==")
                NEQ - no igual
                LSS - menor que
                LEQ - menor que o igual
                GTR - mayor que
                GEQ - mayor que o igual

Su sintáxis es la siguiente:
    Comparación de variables
    If [variable, operador de comparacion, variable, comando a realizar si se cumple la comparación]

    Comprobación de archivos
    If [modificador Exist, ruta, comando a realizar si se comple el requisito]

Ejemplos:
    If %NumDeManzanas% == %NumDeNaranjas% Echo Hay la misma cantidad de Manzanas que de Naranjas.
    If %NumDeManzanas% GTR 3 Echo Tienes muchas manzanas, me regalas una?
    If Exist C:\Windows Echo Tienes el sistema operativo Windows instalado.
    If NOT Exist C:\Windows Echo No tienes el sistema operativo Windows instalado.
--------------------------------------------------------------------------------------------------------------------------------------

For:
    El comando "For" es uno de los comandos más útiles y completos de Batch y por lo que he visto en la red es uno de los que más le cuesta usar a la gente.
    Este comando realiza una dicha cantidad de tareas según se requiera, desde recorrer un directorio buscando un archivo hasta hacer una bucle con otro "For", entre otras cosas.

    Los modificadores de "For" son los siguientes: "/D" recorre directorios dados por nosotros; "/R" recorre desde el directorio dado por nosotros hasta la última carpeta dentro del mismo ordenadamente;
    "/L" forma un ciclo de sucesiones numéricas; "/F" recorre un archivo o variable, lo abre y lo lee, mostrando la primera línea o palabra de contenido. A este modificador se le pueden agregar más funciones (opciones):
   
    eol:      Se asigna un caracter (solo uno) para seperar lo que es comentario del texto a utilizar.

    skip:     Asigna el número de línea que el comando se saltará antes de leer el contenido.

    delims:   Asigna delimitadores para separar el contenido.

    tokens:   En esta opción se especifica que parte del contenido queremos mostrar seleccionando la "posición" del mismo a la vez que son guardador en variables alfabéticas.

    usebackq  Esta opción es algo extraña para mi. Lo que hace es cambiar la simbología del ingreso de comandos, ruta, texto. (Es la forma en que reconoce esas entradas)
            Ejemplo: Para ingresar la búsqueda en un comando se utiliza las comillas simples ('comando') y con esta opción queda así (`comando`)
                 Para ingresar la búsqueda en un archivo se utiliza solo los paréntesis (nombre de archivo) y con esta opción queda así ("nombre archivo")
                 Para ingresar la búsqueda en un texto se ultiliza las doble comillas ("texto") y con esta opción queda así ('texto')
                Es algo extraño, por lo menos para mi, que exista esta opción.

Su sintáxis es la siguiente:
    Normal
    For [variable de una letra anteponiendo % (%a), IN, (conjunto o listado de archivos), DO, comando a realizar en el conjunto]

    Modificadores
    For [/D, variable de una letra anteponiendo % (%a), IN, (conjunto o listado de directorios), DO, (comando a realizar en el conjunto)]
    For [/R, Ruta, variable de una letra anteponiendo % (%a), IN, (conjunto o listado de archivos), DO, (comando a realizar en el conjunto)]
    For [/L, variable de una letra anteponiendo % (%a), IN, (número de inicio, aumento o disminución, número final), DO, (comando a ralizar en cada aumento o disminución)]
    For [/F, opciónes, variable de una letra anteponiendo % (%a), IN, ('comando', archivo, o "texto"), DO, (comando a realizar)]

Ejemplos:
    For %a IN (primero segundo tercero cuarto) DO (Echo Este es %a contenido)

    For /D %a IN (mu*) DO (Echo Los directorios que empiecen con "mu" en esta ruta son los siguientes: %a)
    For /R %tmp% %a IN (*.txt) DO (Echo usted tiene los siguientes archivos de texto en esta ruta: %a)
    For /L %a IN (1,1,100) DO (Echo Mira, se contar hasta 100: %a)

    For /F %a IN ("%time%") DO (Echo La hora es :%a)
    For /F "eol=x" %a IN ("Contenido x Comentario") DO (Echo %a)
    For /F "tokens=1-7,10* delims=" %a IN ("Hola, soy Codex y me gustan las peras o las manzanas") DO (Echo %a %b %c %d %e %f %g %h %i)

    Nota: Para guardar el contenido del "For" en una variable en un archivo por lotes (".Bat", ".Cmd" o ".Com") se usa doble %. Ejemplo: %%a, %%b, %%c, etc.