en Tutoriales

Lenguaje batch tutorial y comandos básicos .bat

Este es un tutorial sencillo para principiantes en el que se intenta explicar de la forma mas simple los principales comandos.
El lenguaje batch no es muy difícil pero para personas que se estén iniciando puede resultar un poco complicado así que intentare explicarlo de la forma mas sencilla posible.

¿Qué es batch?
Un archivo batch es un archivo de texto sin formato guardado con la extensión bat y que contiene un conjunto de ordenes llamadas comandos de DOS.
en resumen un archivo batch es un archivo de texto en el que se a escrito un conjunto de códigos que van a ser ejecutados de forma lineal (ya lo irán entendiendo con ejemplos mas adelante) y ese archivo de texto debe ser guardado con la extensión .bat, es decir un nombre cualquiera.bat ej: nombredelarchivo.bat

Es muy útil para automatizar tareas, por ejemplo un programa que nos abra todas las herramientas que necesitamos para trabajar en un determinado proyecto, de esta forma cada vez que queramos trabajar solo tendremos que pulsar un botón y no hará falta abrir una a una todas las aplicaciones necesarias, pero su utilidad no se queda en esto, todo hacker debe conocerlo, especialmente su equivalente en linux: los scripts de bash.

La terminación bat viene del propio nombre del lenguaje (batch) que debido a que las extensiones de archivos (.bat, .exe, .txt etc) solo pueden tener 3 letras quedo reducido a eso.

PARTE 1

Lo primero que debemos hacer es abrir un archivo de texto y guardarlo con un nombre seguido de .bat tal como expliqué anteriormente en ese archivo vamos a poner nuestros comandos.

Empecemos quitando el eco, para eso escribimos: @echo off

@echo off
pause
exit

Si no sabes lo que es el eco prueba a quitar @echo off y verás lo que pasa.

Pause sirve para hacer una pausa en la secuencia (pulsa una tecla para continuar)
exit sirve para finalizar

Bien ahora vamos a continuar con otro código: el echo y el echo. (nótese el punto)

El echo sirve para escribir algo en pantalla por ejemplo echo hola escribiría hola en la pantalla
echo. sirve para dejar un espacio

@echo off
echo.
echo Hola TodoHacker
echo.
echo Como estas?
pause
exit

Prueba a ponerlo y comprueba lo que pasa

Es muy importante que vayas entendiendo todo esto paso a paso sino se irá complicando bastante.

Ahora vamor a ver una variacion del pause: pause>NUL, sirve para hacer una pausa sin poner nada en la pantalla podéis probarlo sustituyendo pause por pause>NUL en los códigos anteriores

Esto lo vamos a utilizar para poner nosotros el mensaje que queramos en vez del «pulsa una tecla para continuar»
y lo vamos a hacer poniendo algo seguido de pause>NUL veréis el efecto

@echo off echo. 
echo Pulsa una tecla para ir a la siguiente parte del tutorial de todohacker.com 
pause>nul 
echo. 
echo Bienvenido a la segunda parte del tutorial echo. echo Pulsa una tecla para salir 
pause>nul 
exit

PARTE 2

El comando cls sirve para borrar la pantalla.

@echo off
echo.
echo Pulsa una tecla para ir a la siguiente parte del tutorial
pause>nul
cls
echo.
echo Bienvenido a la segunda parte del tutorial de todohacker
echo.
echo Pulsa una tecla para salir
pause>nul
exit

Este es muy sencillo, ejecútalo y te darás cuenta de su utilidad.

Ahora vamos a pasar a las variables, algo que tienen casi todos los lenguajes de programación y que, como verás, te da infinitas posibilidades.

Una variable es un nombre que designa un valor y como su nombre indica puede variar. Gracias a esto podemos guardar valores y darles nombre.

Para poner una variable debemos escribir se nombrevariable= valor. ej: set nombre= pepito

y para referirnos a esa variable debemos escribir el nombre de la variable entre %% ejemplo: hola %nombre%

@echo off
set nombre= Pepito
echo.
echo Hola %nombre%
echo.
pause
exit

Es muy fácil pero es importante que lo entiendas, por que en esto se basa todo lo que viene a continuación, si te estas preguntando por que es realmente importante, ahora vas a verlo.

Ahora vamos a hacer que podamos poner nosotros mismos la variable, es decir que la persona que usa el programa puede asignar un valor.para eso en vez de poner set debemos poner set/p

ej: set/p nombrevariable= valor

@echo off
echo.
set/p nombre= ¿Como te llamas?
cls
echo.
set/p años= ¿Cuantos años tienes?
cls
echo.
echo Hola %nombre% tienes %años% años.
echo.
echo Pulsa una tecla para salir.
pause>nul
exit

Una vez entendido esto vamos a empezar a utilizar las variables por ejemplo para hacer operaciones con ellas.
Para eso utilizaremos set/a. es como el set/p pero no se muestra en pantalla y realiza operaciones, porcentajes, sumas, restas etc.

Estos son los signos que podemos utilizar:

+ para sumar
– para restar
* para multiplicar
/ para dividir

Y lo vamos a expresar así:

@echo off
echo.
set/p numero1= Dime un numero
cls
echo.
set/p numero2= Dime otro para sumar al anterior
cls
set/a suma= %numero1% + %numero2%
echo.
echo %numero1% + %numero2% = %suma%
echo.
echo Pulsa una tecla para salir.
pause>nul
exit

PARTE 3

En esta parte del tutorial vamos a aprender a trabajar con if, if not, else y goto.

If sirve para expresar una condición. Es decir si pasa esto entonces haz esto. Para ello vamos a utilizar la siguiente estructura: if condición acción
ejemplo: if %variable%==4 echo bien!! esto quiere decir que si el valor de la variable es igual a cuatro entonces escribe «bien!!»

Las distintas condiciones que podemos comprobar con un if en batch son las siguientes: (operadores)

if variable==valor (para expresar si la variable es igual a valor haz esto)
if variable LSS valor (para expresar si la variable es menor a valor haz esto)
if variable GTR valor (para expresar si la variable es mayor a valor haz esto)
if variable LEQ valor (para expresar si la variable es menor o igual haz esto)
if variable GEQ valor (para expresar si la variable es mayor o igual haz esto)

if not se utiliza igual que if pero expresa todo lo contrario ej:
if not variable==valor (para expresar si la variable NO es igual a «valor»)  y lo mismo con el resto de condiciones vistas arriba.

@echo off
echo.
set/p variable= ¿Cuanto son 2 + 2?
cls
echo.
if %variable%==4 echo bien!!
echo.
pause
exit

Aquí también se podría utilizar el goto que sirve para enviar la lectura de comandos a otro sitio del bat por ejemplo if variable==valor goto correcto, después mas abajo pondríamos una «etiqueta» con ese nombre después de dos puntos ej: :correcto así quedaría: si variable es igual a valor entonces ir al menú «correcto» y en el ya escribiríamos lo que queramos con un ejemplo lo vas a entender mucho mejor.

@echo off
echo.
set/p variable= ¿Cuanto son 2 + 2?
cls
echo.
if %variable%==4 goto correcto
echo.
:correcto
echo bien!!
pause
exit

En este caso no tendría mucho sentido pero cuando tenemos más variables y muchas opciones a elegir es esencial útil ya lo iréis viendo

Este ejemplo indicaría que si la respuesta a la pregunta «¿cuanto son 2+2?» es 4 entonces escribe bien!!
pero ¿qué pasa si la respuesta no es esa? pues para eso sirve else, se utiliza así:
if variable==valor goto correcto else goto incorrecto esto significaría que si la respuesta es 4 entonces escribe bien pero si la respuesta es cualquier otra cosa escribe mal!!!

@echo off
:inicio
echo.
set/p pregunta= ¿cuanto son 2 + 2?
cls
echo.
if %pregunta%==4 goto correcto else goto incorrecto
:incorrecto
echo.
echo Mal!!
echo.
echo Vuelve a intentarlo
pause
cls
goto inicio
:correcto
echo.
echo Bien!!
echo Pulsa una tecla para salir de este ejemplo de www.todohacker.com
pause>nul
exit

He añadido lo de inicio por que así si es incorrecto vuelve a empezar.

Una vez que hemos llegado hasta aquí si lo habéis entendido podréis hacer cosas como esta:

@echo off
:inicio
echo.
set/p variable= ¿cuanto son 2 + 2?
cls
echo.
if %variable%==4 goto correcto else goto incorrecto
:incorrecto
echo.
echo Mal!!
echo Intentalo de nuevo
pause
cls
set/p variable1= ¿Cuanto son 5 - 3?
cls
if %variable1%==2 goto correcto else goto incorrecto1
:incorrecto1
echo.
echo Mal!!
echo Intentalo de nuevo
pause
cls
set/p variable2= ¿Cuanto son 4 * 4?
cls
echo.
if %variable2%==16 goto correcto else goto incorrecto2
:incorrecto2
echo.
echo mal!!
echo.
echo Intentalo de nuevo
pause
cls
goto inicio
:correcto
echo.
echo Bien!!
echo Presione una tecla para salir de este ejemplo de www.todohacker.com
pause>nul
exit

Te animo a que lo pruebes y te diviertas un rato modificandolo, échale imaginación, no hay limite a lo que puedas hacer 😉

PARTE 4

En esta parte vamos a ver algo muy sencillo, se trata del código de colores de las letras y el fondo de la consola simplemente se expresa con una combinación de números y letras de esta forma:

Primero ponemos color, para indicar que lo que le vamos a decir es el color del la letra y el fondo, y seguidamente debemos poner dos números sin espacio, el primero es el color del fondo y el segundo el color de letra.

Código de colores:

A = Verde claro
B = Aguamarina claro
C = Rojo claro
D = Púrpura claro
E = Amarillo claro
F = Blanco brillante
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro

 Sabiendo esto, si queremos que el fondo sea blanco y las letras negras ponderemos color 70 pruebalo tu mismo. Abajo hay unas fotos explicativas.
Ahora otra cosa muy sencilla.
No se si os habéis fijado en la barra de titulo de la terminal, pone por defecto la ubicación en la que nos encontramos, normalmente system32.

Pues esto se puede cambiar poniendo simplemente «title» y el nombre que le queramos poner.

Pondré un ejemplo conjunto para los códigos de color y titulo.

@echo off
title Prueba de color www.todohacker.com
color 70
echo.
echo Bienvenido a la prueba de color del cmd de todohacker.com
echo.
echo Pulsa una tecla para cambiaer al siguente color
pause>nul
color 4f
pause
exit

Prueba a cambiar los colores para entenderlo mejor.

Ahora vamos a ver redireccionamientos, son muy útiles ya lo verás.
Se utiliza > para escribir algo y >> para añadir algo a un documento que ya tenia algo escrito por ejemplo.
Se utilizan así: echo hola>archivo.txt esto escribiría hola en un archivo de texto situado en el directorio en el que nos encontramos, es decir por defecto en el que tenemos guardado el archivo de bat que ejecuta esta orden. Si el dicho archivo de texto con nombre «archivo» no existe lo crea.

@echo off
echo pulsa una tecla para crear el archivo
pause>nul
echo hola, esto es un ejemplo de todohacker.com > archivo.txt
echo archivo creado
pause
exit

Si os fijáis nos crearía un documento de texto en el escritorio (en caso de que el bat este en escritorio) con el nombre de «archivo», y escribiría dentro hola se pueden crear otro tipo de archivos, modificando la extensión, .txt, .bat etc.
Pero que pasaría si en el archivo queremos escribir mas lineas? en ese momento es cuando utilizamos el >>. si tenemos un documento de texto que pone hola y le decimos que escriba otra cosa así: echo que tal? > archivo.txt, lo remplazaría, es decir, pasaría a poner que tal? en la primera linea.
Pero si ponemos: echo que tal? >> archivo.txt se añadiría al hola una linea mas abajo. Pruébalo tu msimo, aquí pongo dos códigos de ejemplo para que veas la diferencia.

@echo off
echo hola > archivo.txt
echo.
echo Abre al archivo creado antes de continuar y mira lo que pone
echo Cierra el archivo y continua
echo.
pause
cls
echo que tal? > archivo.txt
echo.
echo Fijate en el archivo creado, pondra que tal? "hola" se ha borrado.
echo.
pause
exit
@echo off
echo hola > archivo.txt
echo.
echo Abre al archivo creado antes de continuar y mira lo que pone
echo Cierra el archivo y continua
echo.
pause
cls
echo que tal? >> archivo.txt
echo.
echo Fijate en el archivo creado, "pondra que tal?" despues de hola, no ha borrado nada.
echo.
pause
exit

Es posible que te hayas dado cuenta de algo, y es que esto es lo mismo que usamos para el pause>NUL. Efectivamente lo que estamos haciendo es redireccionar el texto por defecto a un archivo llamado «NUL», en teoría windows no debería crear este archivo, pero se que a veces lo crea, en todo caso no es un problema demasiado grave.

Espero que se haya entendido todo, la parte de las redirecciones es muy importante por que nos va a servir varias pruebas que hagamos posteriormente en creación de virus y scripts automáticos.

PARTE 5

En la anterior parte hemos aprendido a crear archivos, en esta vamos a aprender como ejecutarlos, borrarlos, copiarlos, cambiar sus atributos etc.

Empecemos por ejecutarlos.

Retomemos el ejemplo anterior en el que creamos un archivo de texto con dos lineas, bueno pues ahora vamos a ejecutarlo y a borrarlo.

@echo off
echo hola, esto es un ejemplo de todohacker.com > archivo.txt
echo.
echo abre al archivo creado antes de continuar y mira lo que pone
echo cierra el archivo y continua
echo.
pause
cls
echo que tal? >> archivo.txt
echo.
echo fijate en el archivo creado, "pondra que tal?" despues de hola, no ha borrado nada.
echo.
pause
exit

Para ejecutar un archivo utilizaremos el comando start y para borrarlo el comando del acordaos de especificar siempre la extensión.

@echo off
echo hola, esto es un ejemplo de todohacker.com > archivo.txt
pause
echo que tal? >> archivo.txt
echo.
echo El archivo se acreado
echo.
echo Ahora vamos a ejecutarlo (abrirlo)
pause
start archivo.txt
cls
echo.
echo bien puedes cerrar el archivo por que vamos a borrarlo
pause
del archivo.txt
cls
echo.
echo Archivo borrado con esto se puede borrar cualquier archivo, solo hay que saber el nombre 😀
pause
exit

Al comando del se pueden añadir distintas letras para que funcione de distinta forma:

del/f Modo force. Borra incluso los archivos de solo lectura
del/s Borra también los subdirectorios.
del/p Pide confirmación
del/q Modo silencioso. No pide confirmación en ningún caso

Se pueden utilizar varios en el mismo del
por ejemplo: del/f/p archivo.txt
borraría el archivo aunque fuese de solo lectura y pediría confirmación

Por supuesto para el comando del también se puede especificar la ruta del archivo si este no estuviera en el mismo directorio
ej: del c:/ruta/correspondiente/archivo.txt

Ahora vamos con el comando cd que utilizaremos para cambiar el directorio general de la terminal, es decir, si el archivo bat esta en el escritorio la terminal estará en ese directorio por defecto y para cambiarlo utilizaremos el mencionado cd.

Por ejemplo si queremos crear el archivo txt del ejemplo en mis documentos en vez de en el escritorio podriamos escribir la ruta cada vez que nos refiramos al archivo pero es mas sencillo si cambiamos el directorio actual de la terminal para que siempre se dirija allí.

Para ello escribiremos: cd C:\Documents and Settings\Propietario\Mis documentos (los nombres de los directorios pueden cambiar según el ordenador)
y todo lo que creemos o eliminemos sin especificar la carpeta lo hará en mis documentos

También podemos escribir:
cd..(con los puntos) e irá al directorio superior es decir, si estamos en mis documentos se trasladará a propietario, en el caso del ejemplo
cd \\ y se trasladara a la raíz del directorio. en este caso C:

Llegados a este punto tienes los conocimientos necesarios para continuar aprendiendo por tu cuenta a partir de experimentación y experiencia, voy a nombrar algunos comandos más:
rd borra un directorio de raíz solo tenemos que especificar la ruta del directorio y borra todo lo que tenga dentro, carpetas, mas archivos, etc.

format formatea una unidad por ejemplo format k: formatearía un pendrive externo o le que tengamos en esa unidad, o format c: (ya podéis imaginaros lo que hace)

taskkill termina un proceso como por ejemplo el skype muy útil para bromas ej: taskkill Skype.exe cerraría el skype. Puedes ver los procesos que tienes activos pulsando ctrl+shift+esc. (shift es la tecla que esta sobre el ctrl de mayusculas.)

shutdown también es muy útil para bromas y según lo que lleve detrás significa una cosa u otra:

-p Apaga el equipo local sin tiempo de espera ni advertencia.
-h Hiberna el equipo local.
-l Cierra la sesion.
-g Cierra la sesion y reinicia el equipo
-s Apaga el equipo.
-r Reinicia el equipo.
-e Documenta la razón del cierre inesperado de un equipo.
-m \\equipo Especifica el equipo de destino. (explicado mas abajo)
-t xxx Establece el período de tiempo de espera antes del cierre en xxx segundos.
-c «comentario» Comentario acerca de la razón del reinicio o apagado.
-f Fuerza el cierre de las aplicaciones sin advertir previamente a los usuarios.
-a Cancela el apagado.
(nota: Estas opciones solo están disponibles a partir de windows 7, en versiones anteriores solo tenemos -s, -r, -t, -a, -c)

Esto es básicamente lo que utilizo en el titorial de crear un minivirus pero de forma mas sencilla

un ejemplo
shutdown -s -t 60 (tiempo en segundos) -c virus intrusion
Cuando se ejecute pondrá una cuenta atrás de 1 min, pondrá el mensaje de: «virus intrusion» y se apagará
para cancelar la cuenta atrás debemos poner shutdown -a, se puede poner directamente en inicio, ejecutar (simbolo de windows + R) y se cancelara automáticamente.

msg * es otro comando muy útil para bromas hace que salga un mensaje de windows con el texto que le pongan

Por ejemplo: msg * atención su sistema contiene software ilegal estamos enviando la información al FBI

Ahora aprenderemos a utilizar el comando copy que como su nombre indica sirve para copiar archivos.
Se utiliza de este modo copy ruta del archivo que queremos copiar «ruta del directorio donde lo queremos copiar incluyendo el nuevo nombre del archivo.

Ejemplo: si queremos copiar un archivo que se llama cosa.txt de el directorio del escritorio a mis documentos, pondremos: copy C:\Documents and Settings\Propietario\Escritorio\cosa.txt «C:\Documents and Settings\Propietario\Mis documentos\cosa2.txt

y por último para cambiar los atributos de un archivo utilizaremos attrib

arttrib+ nombre del archivo o ruta, mostraría los atributos del archivo.

Los atributos son solo lectura, oculto, sistema
Para cambiarlos utilizaremos:

r => Lectura. Solo lectura con +r, normal con -r
h => oculto. Se activa con +h y desactiva con -h
s => Sistema. Se activa con +s y desactiva con -s

ej:attrib +h se pondría oculto como atributo

Aquí concluye este tutorial, estos son los comandos mas básicos que me ha parecido importante mencionar, hay que decir que he obviado cosas que podrían considerarse importantes, como por ejemplo los bucles, pero este tutorial tenia la misión de ser una introducción, y no me ha parecido conveniente extenderlo mas, ahora es tu misión continuar aprendiendo, lo más importante ya lo sabes y ahora el limite es tu imaginación.

Solo me queda para concluir mencionar un modo de nombrar a los archivos en general
para ello utilizaremos el * que nombra a cualquier archivo es decir si decimos:

del archivo.* borraria todos los archivos que se llamen «archivo» sean de la extensión que sean
del *.txt borraría todos los archivos de texto se llamen como se llamen
del a*.txt borraría todos los documentos de texto que empiecen por a
del nombre.d* borraría todos los archivos que se llamen «nombre» y que su extensión empiece por d como doc o dat

También podemos utilizar ? se usa igual que * pero sustituye a una única letra
ej: del pan?l.txt boraria todos los archivos de texto que empezasen por pan siguiese una letra cualquiera y terminase en l por ejemplo panel, panal etc.

Espero que hayan entendido todo. Cualquier duda que tengan por favor pongan un comentario y se responderá con mucho gusto.
Si quieres puedes poner en una ventana de terminal help y saldrán todos los comandos, por supuesto TODOS los comandos mencionados aquí se puede escribir directamente en la ventana de terminal sin necesidad de crear un archivo bat.

Este tutorial tiene copyleft de TodoHacker.com si lo usas, pon las fuentes.

Creative Commons License


Todohacker by 4m1g0 is licensed under a Creative Commons.

Escribe un comentario

Comentario

360 Comentarios

  1. Como seria la secuencia de comando en un batch windows o linux para extraer un archivo si previamente se accede con una cuenta gmail
    la secuencia manual seria:
    en una ventana accedo a internet
    1.- https://console.cloud.google.com/storage/browser/gcp-public-data-goes-16/ enter … ingreso mi usuario y contraseña

    2.- Accedo a la carpeta tipo ABI-L2-MCMIPF/

    3.- Accedo a la carpeta año 2018/

    4.- Accedo a la carpeta dia juliano 139/

    5.- Accedo a la carpeta hora UTC 17/

    6.- busco el ultimo archivo con codigo OR_ABI-L2-CMIPF-M3C14

    7.- Luego click (extrae) OR_ABI-L2-CMIPF-M3C14_G16_s20181391715420_e20181391726187_c20181391726272.nc

    Todo estos procesos como lo haria en comando de linea o con un batch

    Gracias

    • Hola Jorge,

      Muy complicado hacer eso en bat como lo has descrito. En concreto google cloud tiene una API de programación que te permite acceder a sus ficheros usando diferentes lenguajes de programación y autenticarte usando las credenciales adecuadas.

      En este enlace tienes las guías sobre como usarlo, pero es un tema relativamente avanzado… bastante mas allá que este tutorial.

      Saludos

    • hola me podrías ayudar como hago para que me imprima el archivo texto sin tener que hacerlo desde el menu del block de notas talves alguna una opción en el programa o un comando bach ..gracias

  2. Hola 4m1g0: Te felicito…todo un GURÚ….
    Yo tengo archivos que programé se abran o carguen siempre al iniciar windows, en menú inicio>programas etc. Y corren perfectamente.
    ¿Que debo hacer si quiero que al encender mi pc, además que carguen estos programas, por ejemplo, se ejecute una canción en windows media, pero que al finalizar se cierre la ventana de windows media? Se puede desde aquí(windows) o debo hacer un crear un archivo .bat adentro de la carpeta del menu inicio y que comando le doy para que cierre dicha ventana?

    • Hola Halcón,

      Gracias por tu comentario. El problema a la hora de cerrar windows media es que no sabes si ha acabado la canción o no. El reproductor no te avisa cuando termina y no hay una forma sencilla de detectarlo. Lo que puedes hacer, si sabes cuanto dura la canción es, esperar esos segundos y después cerrar windows media… Para esperar se suele usar el comando ping en bat:

      @echo off
      start calc.exe
      PING localhost -n 6
      taskkill /im calc.exe

      Este código debería abrir la calculadora, esperar 6 segundos y cerrarla.

      • Hola 4m1g0

        CON TUS SABIOS CONSEJOS SI LO LOGRÉ!!!

        Cuando arranco mi máquina me gusta que siempre suene una melodía de 20 segundos, y a la vez me indica que la máquina arrancó bien. Intenté mil veces hacerlo desde la consola de sonidos de windows, en inicio de windows ponía el nombre de la melodía, PERO inexplicablemente no funcionaba.

        Sólo tuve que hacer una pequeña correción en la línea del taskkill pues cerraba la canción pero NO el reproductor. Te dejo como lo logré.

        @ echo off
        start C:\Windows\Media\NFL.wav
        PING localhost -n 24
        taskkill /im WMPLAYER.EXE

        Lo único que restaría es que la ventana del ms-dos, quede minimizada durante la ejecución, pero no importa, luego de 24 segundos, se cierra sola.

        Felicitaciones 4m1g0

  3. Buenas tardes amigos,

    Tengo una consulta, como hacer que al ejecutar un bat, me pida clave y no la muestre en pantalla
    al escribirla.

    Me podrian ayudar?

  4. Hola 4m1g0

    Lo logré de nuevo con la referencia que me diste y funcionó, agregándole al final exit nuevamente. Aquí te dejo como funcionó. Ahora si minimiza la ventana del prompt.

    if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start «» /min «%~dpnx0» %* && exit
    @ echo off
    start C:\Windows\Media\NFL.wav
    PING localhost -n 24
    taskkill /im WMPLAYER.EXE
    exit

    Ahora te pregunto: COMO HAGO PARA MINIMIZAR TAMBIÉN LA APLICACIÓN (wmplayer.exe)? INTENTÉ VARIAS COSAS NO lo consigo. gracias

  5. Hola mira tengo una urgencia sobre un scrip
    Hoy en un examen me ponia que hacer un menu y con una etiqueta que tuviera que poner la hora otra etiqueta para poder modificarla ahora igual pero en vez de la hora con la fecha y salir
    y que si no haciamos nada se saliese

  6. Hola

    Me gustaría saber si existe una manera de ejecutar un archivo.bat creado en Linux a Windows

    Ejemplo:

    He creado un archivo en Linux llamado prueba.bat y lo quiero ejecutar en Windows.

    • Hola Samuel,

      Batch es un lenguaje interpretado, eso quiere decir que lo que escribes es un simple archivo de texto. Lo puedes escribir incluso en el móvil, so lo guardas adecuadamente, windows podrá ejecutarlo.

      Todos los sistemas operativos tienen un lenguaje así. En linux se usa bash normalmente.

      Saludos

      • Hola

        Creo que no he formulado bien la pregunta xD:

        si no me equivoco batch se usa para Windows y bash para Linux, entonces si yo escribo un archivo .bat con el lenguaje bash y lo ejecuto en Windows según he probado no es capaz de leerlo correctamente. ¿Hay alguna manera de poder leerlo?

        Otra pregunta:

        He escrito el siguiente codigo:

        @echo off
        mode con lines=50
        mode con cols=100
        color 04
        :inicio
        echo ---------------------------------------------------------------------------------------------------
        echo               Bienvenido a la prueba de script, pulse cualquier tecla para continuar
        echo ---------------------------------------------------------------------------------------------------
        pause>nul
        cls
        echo.
        echo.
        color 07
        set fin=
        set/p calculadora= Pulse 1 para abrir la calculadora. Si desea saltar este paso pulse cualquier otro caracter.
        set iniciotest=
        if %calculadora%==1 start calc.exe
        if not %calculadora ==1 goto iniciotest
        :iniciotest
        set test=
        set fin=
        set/p test=Pulse 2 si desea realizar un test. Si desea saltar este paso pulse cualquier otro caracter.
        if %test%==2 goto test
        if not test==2 goto fin
        
        :test
        :pregunta1
        set incorrecto1=
        set/p atlas=¿Quien es Atlas?
        if %atlas% %atlascorrecto%==Fontaine goto correcto1
        if not %atlas%==Fontaine goto incorrecto1
        set atlascorrecto=1
        
        :pregunta2
        set incorrecto2=
        set/p cordero=¿Quien es el cordero?
        if %cordero% %corderocorrecto%==Elizabeth goto correcto2
        if not %cordero%==Elizabeth goto incorrecto2
        set corderocorrecto=1
        
        
        :pregunta3
        set correcto3=
        set/p Comstock=¿Quien es Booker en otra dimension?
        if %Comstock%==Comstock goto correcto3
        if not %Comstock%==Comstock goto incorrecto3
        
        :correcto1
        echo Correcto, siguiente pregunta.
        goto pregunta2
        
        :correcto2
        echo correcto, siguiente pregunta.
        goto pregunta3
        
        :correcto3
        echo correcto, Has terminado las preguntas
        goto fin
        
        :incorrecto1
        echo Incorrecto, siguiente pregunta.
        goto pregunta2
        
        :incorrecto2
        echo incorrecto, siguiente pregunta.
        goto pregunta3
        
        :incorrecto3
        echo incorrecto, has terminado las preguntas.
        goto fin
        
        :fin
        set suma= %atlascorrecto% + %corderocorrecto%
        echo Enhorabuena Has terminado el test tu puntuacion final es: %atlascorrecto% + %corderocorrecto% = %suma%
        echo Pulsa una tecla para salir.
        Pause>nul
        exit
        

        Como resultado final quiero que se sumen dos valores.

        En la pregunta ¿Quien es Atlas? le asigno la variable atlascorrecto a la respuesta Fontaine, y luego a la variable atlascorrecto le asigno el valor 1.

        En la pregunta ¿Quien es el cordero? hago los mismo solo cambiando la respuesta.

        Luego en la etiqueta :final hago una operación para que se sumen los dos valores es decir: atlascorrecto=1 + corderocorrecto=1, realizaria la siguiente operacion 1 + 1
        pero al hacerla me aparece el siguiente resultado

        Enhorabuena has terminado test tu puntuacion final es: + = +
        quiero que me aparezca la suma de los numeros 1 + 1

        Siento que tengas que leer todo esto xD.

        Muchas Gracias.

        • Me contesto a mi mismo xD

          Ya he encontrado la solución, he creado tres variables en :correcto1, :correcto2 y :correcto3 donde el resultado es 1, y en :fin las he añadido, también cree variables con resultado 0 en :incorrecto1, :incorrecto2 y :incorrecto2 y las añadí a :fin
          Les dejo el código por si le sirve a alguien.

          @echo off
          mode con lines=50
          mode con cols=100
          color 04
          :inicio
          echo ---------------------------------------------------------------------------------------------------
          echo               Bienvenido a la prueba de script, pulse cualquier tecla para continuar
          echo ---------------------------------------------------------------------------------------------------
          pause>nul
          cls
          echo.
          echo.
          color 07
          set fin=
          set/p calculadora= Pulse 1 para abrir la calculadora. Si desea saltar este paso pulse cualquier otro caracter.
          set iniciotest=
          if %calculadora%==1 start calc.exe
          if not %calculadora% ==1 goto iniciotest
          :iniciotest
          set test=
          set fin=
          set/p test=Pulse 2 si desea realizar un test. Si desea saltar este paso pulse cualquier otro caracter.
          if %test%==2 goto test
          if not test==2 goto fin2
          
          :test
          :pregunta1
          set incorrecto1=
          set/p atlas=¿Quien es Atlas?
          if %atlas% %atlascorrecto%==Fontaine goto correcto1
          if not %atlas%==Fontaine goto incorrecto1
          set atlascorrecto=1
          
          :pregunta2
          set incorrecto2=
          set/p cordero=¿Quien es el cordero?
          if %cordero% %corderocorrecto%==Elizabeth goto correcto2
          if not %cordero%==Elizabeth goto incorrecto2
          set corderocorrecto=1
          
          
          :pregunta3
          set correcto2=
          set/p Comstock=¿Quien es Booker en otra dimension?
          if %Comstock%==Comstock goto correcto3
          if not %Comstock%==Comstock goto incorrecto3
          
          :correcto1
          set atlascorrecto=1
          echo Correcto, siguiente pregunta.
          goto pregunta2
          
          :correcto2
          set corderocorrecto=1
          echo correcto, siguiente pregunta.
          goto pregunta3
          
          :correcto3
          set comstockcorrecto=1
          echo correcto, Has terminado las preguntas
          goto fin
          
          :incorrecto1
          set atlasincorrecto=0
          echo Incorrecto, siguiente pregunta.
          goto pregunta2
          
          :incorrecto2
          set corderoincorrecto=0
          echo Incorrecto, siguiente pregunta.
          goto pregunta3
          
          :incorrecto3
          set comstockcorrecto=0
          echo Incorrecto, has terminado las preguntas.
          goto fin
          
          :fin
          set/a suma= %atlascorrecto% + %corderocorrecto% + %comstockcorrecto%
          echo Enhorabuena Has terminado el test tu puntuacion final es: %atlascorrecto% %atlasincorrecto% + %corderocorrecto% %corderoincorrecto% + %comstockcorrecto% %comstockincorrecto% = %suma%
          echo Pulsa una tecla para salir.
          Pause>nul
          exit
          
          :fin2
          echo No has seleccionado ninguna respuesta. Pulse una tecla para salir de la prueba.
          pause>nul
          exit
          
          • Genial Samuel,

            Disculpa que no me dio tiempo a revisar tu código y ya te adelantaste tu mismo con la solución.

            Me alegra que lo hayas conseguido arreglar, y gracias también por participar y echar un cable a los demás por aquí!!!

            Saludos

  7. Hola tengo una duda investique un poco y no entiendo muy bien en la programacion de archivos .bat

    es posible usar la funcion GETS.
    Y si se puede diganme como se usa.

    • Hola Francheco,

      No, la funcion GETS es del lenguaje de programación C. Es diferente y muy potente, puede ser el siguiente paso si quieres aprender a programar.

      Con Batch no hay una forma limpia de hacerlo, pero puedes usar el comando choice. Tienes que indicarle la lista de teclas permitidas y no te dejará pulsar ninguna otra. Pruébalo:

      choice /n /C 12345abc /M Elige 1-5, a, b, c:

      La respuesta que haya dado el usuario se guarda siempre en la variable %errorlevel% puedes verlo con echo %errorlevel%

      Saludos!

      • Graisas igualmente de mando saludos ya lo probe en mi programa uno sencillo y si me funciona pero cuando lo quiero agregar a mi segundo programa hay un ploblema,
        cuando Presiono La Y en donde esta error si me envia a la parte de ayuda pero cuando presiono N no me envia a la parte de menu. ¿Porque?

        @echo off
        Title Temporizador de Juego
        cls
        color 8f
        echo.
        set/p Tiempo= Escribe el tiempo que quieres tener:
        cls
        if %Tiempo% LSS 600 goto:Mensaje
        if %Tiempo% GTR 750 goto:Establecido
        @pause
        
        
        :Mensaje
        color 4f
        echo.
        echo.
        echo.
        echo.                            
        echo.
        echo.
        echo.				ERROR...
        echo.                                 
        echo		:========================================================:
        echo		:	Intenta introducir un numero mayor que 750	 :
        echo		:		Intentalo Nuevamente...			 :
        echo		:========================================================:
        echo.
        echo.
        
        
                     CHOICE /C:YN /M "Necesitas Ayuda"
                     IF "%ERRORLEVEL%"=="Y" GOTO Ayuda     
                     IF "%ERRORLEVEL%"=="N" GOTO Menu
        
        
        :Ayuda
        cls
        echo. 
        echo Convertidor de Horas a segundos 
        set/p Calcular= Escribe el tiempo que quieres calcular:
        echo.
        cls 
        set/a RTiempo= %Calcular% * 60 
        echo. 
        echo El tiempo: %Calcular%
        echo A segundos son: %RTiempo%
        choice /C:YN /M "Deseas Regresar al menu principal"
        IF "%ERRORLEVEL%"=="Y" GOTO Menu
        IF "%ERRORLEVEL%"=="N" GOTO Ayuda
        @pause
        cls
        
        
        :Establecido
        echo Tiempo establecido.
        set/a Resultado= %Tiempo% - 600
        timeout /t %Resultado% /nobreak
        msg * Quedan 10 Minutos
        cls
        timeout /t 600 /nobreak
        msg * Tu tiempo se a Terminado
        cls
        timeout /t 3 /nobreak
        shutdown -l
        exit
        
        • Hola Franchesco,

          El problema es que %errorlevel% no contiene la letra que el usuario insertó sino la posición de esa letra en la lista que tu pedías en el comando choice.

          Puedes verlo con este script:

          @echo off
          
          choice /C:YN /M "Pulsa "
          echo %ERRORLEVEL%
          pause
          

          Tendrías que sustituir en tu script la comparación que haces en la parte de ir al menú por lo siguiente:

          choice /C:YN /M "Deseas Regresar al menu principal"
          IF "%ERRORLEVEL%"=="1" GOTO Menu
          IF "%ERRORLEVEL%"=="2" GOTO Ayuda
          

          Saludos

  8. Hola 4m1g0, me recuerdas? tu me ayudaste a correr minimizado una melodía en wmplayer. Recuerdas?

    if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start “” /min “%~dpnx0” %* && exit
    @ echo off
    start C:\Windows\Media\NFL.wav
    PING localhost -n 24
    taskkill /im WMPLAYER.EXE
    exit

    Intenté varias cosas con tu consejo para minimizar y lo más que conseguí fue ponerlo en modo máscara, que ocupa una nada. Mi pregunta AHORA es esta:

    Este mismo .bat lo quise hacer en otra compu, y la melodía la tengo en carpetas con nombres compuestos y a pesar de ponerle toda la ruta, dice que no la encuentra.

    Te dejo como lo hice

    if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start “” /min “%~dpnx0” %* && exit
    @ echo off
    start /min C:\MIS DOCUMENTOS PERSONALES\MUSICA Y MAS\CANCIÓN.MP3
    PING localhost -n 24
    taskkill /im WMPLAYER.EXE
    exit

    pero me dice «C:\MIS» no se encuentra. Quise solucionarlo escribiendo guiones bajos, en dicha línea así C:\MIS_DOCUMENTOS_PERSONALES\MUSICA_Y_MAS\CANCIÓN.MP3 Y TAMPOCO. LA PC insiste en que la ruta está mal

    Que sucedió 4m?
    gracias

    • Hola.

      Creo que la ruta tienes que escribirla de la siguiente manera «C:\MIS DOCUMENTOS PERSONALES\MUSICA Y MAS\CANCIÓN.MP3»

      Tienes que poner las comillas «» ya que las carpetas tienen espacios.

  9. Gracias Samuel, fíjate que lo hice lo que me dijiste, pero abre dos ventanas de cmd, en una la supuesta ejecución y otra vacía que solo dice c:\usuario\halcon\documentos y nada más y en la otra corre y descuenta los segundos pero ni siquiera abre el wmplayer. Quizás el error está en la línea inicial

    if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start “” /min “%~dpnx0” %* && exit

    que no la entiendo del todo, pero también esta línea aparece en cmd después de

    c:\usuario\halcon\documentos

    En esta máquina de donde te hablo funcionó a la perfección. La unica diferencia con la otra es la ubicación de la canción y nombre de las carpetas, por ello NO entiendo que sucede que NO corre.

    gracias

    • Hola Halcón,

      Lo que comenta Samuel es correcto, tienes que poner las rutas entre comillas siempre que lleven espacio, como él ha indicado.

      Con respecto a lo que comentas, me parece muy raro que se funciona en un ordenador no funciona en el otro. Comprueba que la ruta está bien escrita y entre comillas. Y MUY IMPORTANTE, si has copiado el script de aqui, o de algún otro lado para cambiarlo de ordenador, fíjate bien por que a pesar de que aparentemente todo funciona, las comillas y otros caracteres especiales no son los mismos al copiarlos. Lo mejor ante la duda es que borres todo (incluido la primera linea) y lo escribas desde 0 para asegurarte. O bien que revises manualmente todas las comillas.

      Saludos

  10. Hola

    Siento ser pesado xD

    Me gustaría hacer con batch cosas más específicas como por ejemplo cambiar la dirección ip o cambiar de usuario…

    Por lo que tengo entendido hace falta aprender como funciona el registro de Windows.

    ¿Me podrías decir alguna página donde lo expliquen? Preferiblemente en Español aunque si es en Inglés también me sirve.

    Gracias

  11. hola 4m1g0 quiero consultarte algo he creado un bat para hacer backup a mis usuarios y usuarias. ademas, quiero crear un bat que me brinda que bakup se ha realizado correctamente y quienes no realizo su respectivo backup.Agradeceria tu respuesta.

    • Hola,

      Gracias por seguirnos. Por tu pregunta no entiendo de que quieres hacer backup concretamente… ¿Tienes algo ya hecho? muéstranos el código y lo vamos viendo juntos.

      Saludos

  12. Hola 4m1g0, me recuerdas? El de la canción al iniciar windows. Te cuento que según tu último comentario, eliminé el script inicial, y lo corrí en mi 2do ordenador, tal y como corrió bien en este 1er ordenador, lo deje igualito como lo dice mi conversación del 31.5.18. si te das cuentas lo único que cambia es la ruta en mi ordenador 2, y como dijo Samuel, le puse entre comillas por ser nombres compuestos, PERO NO FUNCIONÓ. Te lo dejo

    @ echo off
    start /min «C:\MIS DOCUMENTOS PERSONALES\Bkup\Wavs y media\Media\wavinimnf.wav»
    PING localhost -n 24
    taskkill /im WMPLAYER.EXE
    exit

    saludos y gracias 4m1g0

    • Hola de nuevo,

      Siento el retraso, mucho trabajo últimamente.

      ¿Que pasa en lugar de lo esperado? ¿estás seguro de que las comillas están bien puestas? Si las copias y pegas de aquí no funciona, tienes que ponerlas a mano tecleando, por que el carácter es diferente aun que visualmente es igual.

      Si ya has comprobado todo eso, intenta abrir una ventana de CMD y ejecutar manualmente linea por linea a ver que ocurre, seguramente salga algún error que nos de una pista.

      Saludos

      • Hola 4mg10, tenías a toda la comunidad extrañada de tu silencio, pero que bueno que era por trabajo. Probé lo que dijiste y NUEVAMENTE, como todo un gurú, diste en el clavo. Todo el script está bien copiado, pero cuando Samuel me dijo que pusiera comillas, no funcionaba, hasta que cambié de lugar las comillas. Mira:

        ASI NO FUNCIONÓ start /min «C:\Mis doc……
        ASÍ SI FUNCIONÓ start /min C:»\Mis doc…..

        Era el lugar de las comillas, que debe ir después de la C

        gracias de nuevo

  13. Hola Brother muchas gracia ..Buen tutoria aprendi mucho..
    pero tengo una preguta..Puedo ejecutar teclas Mediante ese lenguaje??

  14. Estimado necesito su ayuda estoy intentando programar una piramide de numeros de la siguiente manera

    1
    22
    333
    4444
    55555
    666666
    7777777
    88888888
    999999999

    he echo mi programación de la siguiente manera

    @ echo off
    set x=0

    for /l %%i in (1,1,8) do (
    for /l %%g in (1,1,1) do ( call :piri %%i
    )
    )

    :piri

    set /a x= %x%+1
    set x=%x%
    echo %x%%y%
    set y=%x%%y%
    set /a y=%y%+1

    :eof

    pero la piramide me queda de esa manera

    1
    22
    323
    4324
    54325
    654326
    7654327
    87654328
    987654329

    favor ayudar si estoy bien encaminado o si se puede hacer de otra manera
    atento a su respuesta

    • Hola Gabriel,

      Me parece que te estás complicando más de lo necesario.

      Fíjate en el problema, necesitas hacer 9 iteraciones (una por cada linea)
      En cada iteración i tienes que imprimir i veces el número i.

      iteración 1, 1 vez el 1
      iteración 2, 2 veces el 2… etc.

      Por lo tanto necesitas 2 bucles anidados: el primero del 1 al 9 y el segundo del 1 al i (siendo i el número de iteración del primer bucle). Fíjate en el siguiente código:

      @echo off
      for /l %%i in (1, 1, 9) do (
        for /l %%g in (1, 1, %%i) do (
          if %%g LSS %%i (echo|set /p=%%i) else echo %%i
        )
      )
      pause
      

      Si te fijas el código anterior es exactamente lo que comenté antes, lo único raro es que queremos imprimir los primeros números seguidos (sin saltar de linea) y para eso uso el comando echo|set /p=%%i que imprime i sin pasar de linea. Solo el último número de cada linea se imprime con echo, para pasar a la siguiente linea.

      El resultado es este:

      1
      22
      333
      4444
      55555
      666666
      7777777
      88888888
      999999999
      Presione una tecla para continuar . . .
      
  15. Hola 4m1g0,

    Estoy atascado y necesito tu ayuda por favor. Tengo una serie de datos en un .txt sacados de una consulta de una base de datos y necesito usar esos datos en un .bat para pasárselos como parámetros a una orden.

    He visto en otros tutoriales como guardar los datos de un fichero de texto en una variable, pero claro en mi caso necesito los distintos datos de la consulta (son 4) en variables distintas y usar esas variables en mi .bat para pasarlas como parámetros de una orden.

    No se si me he explicado muy bien pero espero que lo entiendas. Dime por favor como solucionar esto o si se te ocurre otro método mas sencillo.

    Un saludo.

    • Hola Sandritto,

      Lo que pides requiere un procesamiento relativamente complejo, no es de iniciación.

      El proceso se llama parsear, y consiste en leer el fichero e ir interpretando lo que hay en el y qué significa.

      En bat se suele hacer con un bucle for con el parámetro delims.

      Te dejo aquí un enlace de stack overflow en el que ponen un ejemplo bastante claro de parseo de un fichero con variables separadas por comas:

      https://stackoverflow.com/questions/17453085/windows-batch-to-read-file-and-parse-lines-into-tokens-and-variables#

      Pruébalo e intenta entenderlo bien antes de modificarlo para que haga lo que necesitas.

      Saludos

      • Muchas gracias por la respuesta. Me pondré a tope con ello.

        Otra duda, estoy realizando consultas a una base de datos mediante la linea de comandos. El caso es que para realizar estas consultas uso el comando/utilidad ‘sqlcmd’. Al introducir ese comando la consola entra como en otra interfaz por así decirlo y dentro puedes ejecutar otros comandos que sirven para consultar la base de datos, entonces quería saber si para ponerlo en el .bat se pondrían como comandos normales o habría que hacer algo especial con eso.

        Gracias de antemano.

  16. muchas gracias por el tutorial
    mi consulta es: quiero hacer un bucle con una frase «ëjemplo» pero avanza muy rápido y no se puede leer hay forma para que las oraciones avancen de una forma mas pausada?
    o si uso el comando msg * se puede combinar con un bucle? o hacer que aparezcan en distintas zonas de la pantalla no en el mismo lugar?
    gracias.

    • Hola Jonathan,

      Para hacer esperar en bat suele usarse el comando ping (por que tarda 1 segundo por cada iteración). Ejemplo:

      @echo off
      echo 1
      PING localhost -n 2
      echo 2
      PING localhost -n 2
      echo 3
      pause

      El comando msg lo puedes meter dentro de un bucle sin problemas, pero saldrán en la misma zona de la pantalla…

      Saludos

      • Hola 4m1g0, pido disculpas por haber estado subiendo codigos a tus usuarios sin tu concentimiento, mi intencion es ayudarlos, nada de codigos maliciosos te lo aseguro… he ideado algunos que seguramente resolveran algunas interrogantes en tu blog, pero los codigos son extensos si te intereza hacerte de esos codigos, escribeme y con gusto te los envio…

  17. buen día

    trabajo en el área de TI de una empresa y debo hacer una desinstalación masiva de una aplicación, la idea es realizar la desinstalación por medio de CMD usando el comando wmic, realice la prueba manual en mi equipo y hay un paso en el cual pide confirmación para realizar la desinstalación. me gustaria sabher como puedo plantear que si pregunta xxxxx responda yes o Y.

    @echo
    wmic product where name=»kiteworks» call uninstall %pregunta% %computername%\ROOT\CIMV2:Win32_Product.IdentifyingNumber=»{B1F828B4-30C5-4CC7-ACBD-B5F1869DA9EC}»,Name=»kiteworks»,Version=»1.8.8″)->Uninstall() (Y/N/?)?
    exit

    • Hola Brayan,

      La verdad es que solo he usado WMIC para tareas muy básicas, así que no se como se podría hacer lo que comentas. Supongo que el proceso dependerá del paquete que estés desinstalando.

      Supongo que ya lo habrás mirado tu, pero lo único que se me ocurre para probar a primera vista es usar el parámetro: /INTERACTIVE:OFF

      Basandome en la documentación oficial:
      https://docs.microsoft.com/en-us/windows/desktop/wmisdk/wmic

      Pero como te digo, no puedo darte una respuesta mejor, lo siento. A ver si alguien que nos visite se ha encontrado con este problema anteriormente y puede darnos alguna pista.

      Saludos

  18. muy bueno tu guia he aprndido mucho pero tengo una duda quiero crear un programa que elimine una carpeta con un nombre especicifo (virus) para ser precisos 2 pero ese no es el problema el problema es que no me funsiona es este:

    @echo off

    cd «d:\»
    del /S /Q kfgfytjvbcfgusprxsbht
    del /S /Q jsdsadsdbsgdslkdgs
    pause

    tambien no me cambia de disco, no se que hacer soy nuevo en esto aunque conosco de otros lenguages de programación (c++) que me ayudan a entender todo lo que explicaste muy bien.

    • Hola Pedro,

      No veo ningun problema con el programa que pones, unicamente, para cambiar de unidad, en algunos windows es suficiente con escribir el nombre de la unidad, sin comando delante. Por ejemplo:

       
      @echo off
      D:
      del /S /Q "miArchivo.txt"
      pause
      

      Comprueba que la unidad con letra D exista, si no el programa fallará.

      Saludos

  19. Hola, una pregunta

    Quiero crear un bat que entre en esta página:

    http://www.gobiernodecanarias.org/istac/jaxi-istac/tabla.do?uripx=urn:uuid:31730d2f-86a8-4f0b-a706-5e5942702b7b

    Seleccione los «turismos»
    Seleccione la casilla de todas las opciones del segundo (aunque me conformo con que coja una)
    Seleccione 2917 (p)

    y luego le de al botón de «consultar seleccion»

    He estado probando cosas, pero no consigo que seleccione las casillas, el código que tengo es este:

    @echo off
    
    set pagina=http://www.gobiernodecanarias.org/istac/jaxi-istac/tabla.do?uripx=urn:uuid:31730d2f-86a8-4f0b-a706-5e5942702b7b&uripub=urn:uuid:172cc83a-4789-4f72-bf57-a4d0147c0656
    cls #Limpia la pantalla
    echo Abriendo pagina
    set /p Anno=Escriba el anno que desea descargar:
    
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %pagina%
    echo. 
    echo %Año%
    
    PAUSE
    set seleccion_1 = pagina.find_element_by_name(\"Turismos\")
    echo seleccion_1.click()
    set seleccion_2 = pagina.find_element_by_name(\"CANARIAS\")
    echo seleccion_2.click()
    set seleccion_3 = pagina.find_element_by_name(\"%Anno% (p)\")
    echo seleccion_3.click()
    
    set seleccion_4 = pagina.find_element_by_name(\"Consultar selección\")
    echo seleccion_4.click()
    PAUSE
    • Hola Rayco,

      Por desgracia lo que quieres hacer no se puede hacer así. Es mucho más complejo de lo que parece…

      En el código de ejemplo que pones estás mezclando lenguajes, en concreto parece javascript. No puedes hacer eso con batch lamentablemente. Mi recomendación es que continúes aprendiendo con el lenguaje Python. Todo lo que sabes de batch te ayudará a comprender la sintaxis y con Python podrás hacer muchas más cosas de forma bastante sencilla.

      Saludos

  20. Hola tengo un poblema con mi archivo.bat, estoy «‘creando» un juego[nada profecional] el problema
    es que se me sale del progama al llegar un punto.
    Este es el progama :

    @echo off
    title Juego
    echo.
    echo Hola nuevo jugador, bienvenido a mi juego.
    set/p nombre= Como te llamas?
    pause>nul
    cls
    echo.
    echo Bienvenido %nombre%.
    echo Para comenzar el juego te pido que veas el tutorial.
    echo Se creo un documento en la carpeta. 
    echo Se abre cuando toques una tecla.
    echo Crontoles: >Tutorial.doc
    echo El progama te pregunta algo y te dar ejemplos y tu elegis una [cual elegiste lo tenes que copiar tal cual y sin mayusculas,en serio] >>Tutorial.doc
    echo Ejemplo: >>Tutorial.doc
    echo Pregunta >>Tutorial.doc
    echo Ahds >>Tutorial.doc
    echo Uidf >>Tutorial.doc
    echo Respuesta [en este caso] uidf >>Tutorial.doc
    echo Advertencias: >>Tutorial.doc
    echo No renombrar archivos, mover y borrar [achivos del juego] ya que al hacelo se arruina el juego >>Tutorial.doc
    echo El juego puede abrir paginas wed, apagar tu computadora, borrar achivos y crear achivos [no nos hacemos responsable] >>Tutorial.doc
    echo El juego no tiene un sistema de guadado >>Tutorial.doc
    pause>nul
    echo Leero [se va borrar]
    echo start Tutorial.doc
    pause>nul
    cls
    del Tutorial.doc
    echo.
    echo Antes de comenzar te voy hacer una pregunta:
    echo Que te gusta mas los perros o los gatos?
    echo Gato
    set/p animal= Perro
    pause>nul
    cls
    echo.
    echo Yo soy team gato pero eso no importa, tenes un juego listo para jugar
    pause>nul
    cls
    :morir
    color 07
    echo.
    echo Estas en una habitacion vacia y de un tamaño considerable.
    echo No sables como llegaste ahi.
    echo Decidis ir a esquina a esquina para ver si hay una salida.
    echo Para tu fortuna o para tu desgracia encontras una salida.
    echo Que haces?
    echo 1 Salis
    set/p puerta= 2 Te quedas
    if %puerta%==1 goto salis else goto te quedas
    :te quedas
    cls
    echo.
    echo Te quedas.
    echo Traspasado un MUCHAS HORAS te comienza a dar hambre.
    echo Salis
    set/p puerta2= Te volves a quedar
    pause>nul
    if %puerta2%==te volves a quedar goto te volves a quedar else goto salis1
    :salis1
    goto salis
    :te volves a quedar
    cls
    echo.
    echo Te volves a quedar, te das cuenta que si seguis haci vas a morir.
    echo Decidis salir.
    echo Comenzas a caminar pero mientas lo haces te desmayas.
    pause>nul
    cls
    echo Te despertas pero no tenes la fuerza suficiente para caminar.
    echo Te preparas para morir.
    pause>nul
    cls
    color 40
    echo Moriste
    cls
    pause>nul
    goto morir
    :salis
    cls
    echo no implemetado
    plause>nul

    Gracias por antemano
    PD:Tiene otros fallos pero lo unico poblema que me jode [disculpa la palabra] es que en un momento se me sale el achivo

    • Hola Agustin.

      En primer lugar ernhorabuena por el juego, te falta todavía para completarlo pero tiene muy buena pinta.

      En primer lugar, para evitar confusiones, evita en los nombres de las etiquetas poner espacios. Por ejemplo en «goto te quedas» es mejor usar «quedas» o «tequedas» (recuerda cambiar también la etiqueta (:tequedas).

      En segundo lugar, cuando haces una pregunta, intenta que el jugador responda con número siempre que sea posible como haces en la línea 51. Así es mucho más sencillo, y es menos probable que el que juega comenta un error al escribir una palabra mal.

      El motivo por el que se te cierra es por que en este if:

      if %puerta2%==te volves a quedar goto te volves a quedar else goto salis1

      La comparación es muy compleja, por lo que te comentaba antes. Deberias usar comillas y quitar los espacios en la etiqueta así:

      if %puerta2%=="te volves a quedar" goto tevolvesaquedar else goto salis1

      O mucho mejor: Preguntar con números como hacías en la pregunta anterior:

      1 Sales
      2 Te vuelves a quedar
      

      Al hacer ese if tan complejo, según lo que escribas o da error la comparación o se va por el else a «:salis1», que a su vez te lleva a «salis» y si te fijas aquí hay un error: Has escrito pLause en lugar de pause. Por lo tanto se cierra.

      Espero que te sirve. Si no entiendes alguna cosa, pregunta más. Y si finalmente consigues completar el juego, compártelo aquí para que podamos jugarlo!!

      Saludos

  21. Hola, no se si puedan ayudarme, tengo el siguiente bat

    @echo off
    set HORA_COMPLETA=%TIME% 
    set FECHA_COMPLETA=%date%
    echo Se Eliminaron los archivos de la ruta C:\ValidacionFotoNV
    forfiles /p "C:\ValidacionFotoNV" /s /m *.*  /d -30 /c "cmd /c del @file" 
    forfiles /p "C:\ValidacionFotoNV" /s /d -31 /c "cmd /c IF @isdir == TRUE RMDIR /s /q @path" 
    echo %FECHA_COMPLETA% %HORA_COMPLETA% OK>>a.log 
    pause
    echo Fin

    Pero lo que quiero es que en el archivo a.log me guarde el resultado de la eliminación (principalmente si hay error)
    Agradezco su ayuda

    • Hola Sonia,

      Lo más sencillo es que se guarde en a.log los errores que ocurran, para ello basta con redirigir la salida de errores siempre al archivo a.log.

      Como ya sabes para redirigir la salida completa de un comando a un archivo se puede hacer con el símbolo «>>». Si quieres que solo guarde los errores, se puede hacer con «2>». Por ejemplo en tu programa quedaría así:

      forfiles /p "C:\ValidacionFotoNV" /s /m *.* /d -30 /c "cmd /c del @file 2>a.log"
      forfiles /p "C:\ValidacionFotoNV" /s /d -31 /c "cmd /c IF @isdir == TRUE RMDIR /s /q @path 2>a.log"

      Esto guardaría un registro con todos los errores que han ocurrido. Si quieres que solo se guarde el texto «ha ocurrido un error» podría hacerse que guarde todos los errores en un archivo temporal, por ejemplo: temp.log y luego que compruebe si el archivo está vacío o no para saber si hubo algún error.

      Saludos

    • Hola Anita,

      Puedes hacer con el comando shutdown. Ejecutando help shutdown, puedes ver todas las opciones que hay (no son pocas).

      En el propio tutorial tienes ejemplos:

      shutdown -s -t 60 (tiempo en segundos) -c Apagando dentro de 60s...

      Saludos

  22. tengo una duda es que cuando ejecuto este comando:
    shutdown -I -t 5 -c virus detectado
    me aparece un cuadro que dice dialogo de apagado remoto

    tengo otra duda y es que en mi pc se abre el cmd y se cierra sola dura 1 segundo abierto, y las veces que he podido verlo bien sin que se cierre aparece sin nada y con el titulo cmd.exe que batch estara causand esto

    • No pasa nada, solamente que el programa termina.

      Si quieres usa el comando «pause» después de tu comando, este agrega una linea de texto para que cuando toques alguna tecla se cierre.

  23. Hola, quizás ya sea muy tarde porque el post ya lleva su tiempo, pero tengo una pregunta.

    Yo vengo de programar Java y quiero sabe ¿Cómo hago para finalizar un if y seguir con otro procedimiento?

    Digamos lo siguiente:

     @echo off
    echo Automatico=A ; Manual=M ; Desabilitar=D; Otra tecla para cancelar.
    echo.
    set/p variable= Se modificara el siguiente servicio: Adobe Acrobat Update Service 
    if %variable%==M goto AdobeArobatA
    if %variable%==M goto AdobeArobatM
    if %variable%==D goto AdobeAcrobatD
    
    :AdobeArobatA
    sc config AdobeARMservice start= auto
    echo.
    echo El servicio Adobe Actobat Update esta Automatico
    pause>nul
    goto siguiente
    
    :AdobeAcrobatD
    sc config AdobeARMservice start= disabled
    echo.
    echo El servicio Adobe Actobat Update esta Desabilitado
    pause>nul
    goto siguiente
    
    :AdobeArobatM
    echo.
    sc config AdobeARMservice start= demand
    echo El servicio Adobe Actobat Update esta Manual
    pause>nul
    goto siguiente
    
    :siguiente
    echo.
    echo Hola seguimos probando

    Realmente no vi otra forma de hacerlo, pero si existe, me gustaría saber de esta para ahorrarme un poco más de líneas de código.

    Saludos!

    • Hola Daniel,

      Perdona la tardanza, la manera en que lo haces es correcta. Puedes ahorrarte unas cuantas lineas de código utilizando bloques como harías en java, pero en este caso usando simples paréntesis (es un poco confuso). Por ejemplo:

      if %variable%==D (
          sc config AdobeARMservice start= auto
          echo.
          echo El servicio Adobe Actobat Update esta Automatico
          pause>nul
      )

      Espero que sea de ayuda 😉

      Un saludo

  24. Muy buen post 4m1g0!
    Felicitaciones, gente como tú
    Hace grande nuestra comunidad.
    Yo me intereso por la programación
    Pero nunca lo eh hecho en bash
    Hay alguna distribución de Linux
    Qué recomiendes para empezar??

    • Hola Alex,

      Perdona la tardanza en contestar, es posible que ya te hayas aventurado con algo tu mismo, si es así enhorabuena.

      Una de las distribuciones de Linux más extendida es Ubuntu (https://www.ubuntu.com/). Que sea la más conocida hace que tengas un montón de información y gente usándola y por lo tanto será mas fácil encontrar información.

      Personalmente Ubuntu me gusta, pero soy usuario de Fedora por que es la distribución que más se ajusta a mi modo de trabajar y es mi favorita. Lo bueno de Linux es que tienes mucho donde elegir y las posibilidades son enormes.

      La decisión inicial no es tan importante, lo mejor es decidirse y empezar a usarlo. Hay que acostumbrarse, por que es muy distinto a windows y resulta complicado adaptarse si llevas muchos años acostumbrado a hacer las cosas de la misma manera, pero una vez te adaptas, no lo cambias por nada.

      Saludos

  25. Hola amigo, cuanto tiempo.. Veo que tienes todo esto un poco abandonado jeje..

    Mi pregunta es la siguiente, hay alguna manera de impedir cerrar el programa de forma voluntaria? o por lo menos hacer que si lo cierra se abra otro programa, como una especie de «»Virus»», como para achantar a alguien jaja

    Saludos

    • Hola,

      La verdad es que si, no me llega el tiempo para responder. Pero por lo menos veo que el tutorial sigue ayudando a bastante gente y eso es bueno.

      Técnicamente es bastante complicado hacer que un programa no pueda cerrarse, el sistema está preparado para que el usuario pueda tomar la decisión de cerrar cualquier cosa.

      Lo que si podemos hacer es hacerlo complicado, ya sea corriendo en un nivel de seguridad mayor (de forma que se requieran permisos de administrador para cerrarlo) o bien monitorizando el estado del proceso y reiniciandolo si el usuario lo cierra.

      Ambas cosas se podrían hacer con batch, pero es demasiado engorroso como para que no merezca la pena… De ser necesario hacer algo como eso, es mejor ya pasarse a otros lenguajes de programación como python o C++ por ejemplo. (este ultimo expecialmente si quieres generar un ejecutable nativo).

      Saludos

  26. hola, tengo una duda sobre el comando msg.
    tu pones:
    msg * hola mundo
    pero en el titulo del msg dice mensaje desde (nombre de usuario que utilizo en ese momento)
    como hago para cambiar el titulo de la msgbox?
    + parte avanzada crack. lo as echo bien

    • Hola Alejandro,

      El comando msg no permite asiugnar un titulo, por que está pensado para lanzar mensajes a otros usuarios que estén usando el equipo en remoto…

      De manera simple con batch no hay forma de lanzar un popup con titulo como quieres, requiere usar o bien otro lenguaje de scripting, o llamar a un programa descargado previamente.

      Saludos

  27. Hola no se si todavia este avierto este hilo pero tengo una pregunta necesito que el mismo .bat ejecutado desde varias maquinas conectadas en red local editen el mismo .txt colocado en mi pc en una carpeta compartida. Mi maquina tiene contraseña porque si no no se puede acceder a esta carpeta compartida desde las otras maquinas

  28. , resulta que estoy haciendo un juego MUD, ya sabes , de aquellos Juegos de rol MS-DOS, y me preguntaba si existía alguna manera de lograr que el sistema no reconozca entre minúsculas y mayúsculas, para que cuando alguien escriba por ejemplo: Avanzar, no tenga que escribirlo perfecto, que pueda escribir, AVANZAR, avanzar o incluso aVAnzAr, es un problema que me da ya que a muchos le es cómodo sin la necesidad de activar mayúscula o minúscula

    PD: Excelente tutorial, te mereces una gran maestría

    • Hola Tomas,

      Para hacer una comparación de texto que no sea sensible a mayusculas y minúsculas puedes añadir el parámetro /I al if:

      IF /I "hola" == "HOLA" echo "son iguales"
      # son iguales

      De todos modos, si estás interesado en hacer cosas un poco más avanzadas como lo que intentas, te recomiendo probar con el lenguaje Python. Es muy simple y todo lo que has aprendido te servirá como punto de partida. Python ya es un lenguaje muy serio que se utiliza mucho a nivel profesional.

      Saludos

    • Desde batch no es posible llamar directamente a una impresora. Lo que si puedes hacer es ejecutar un programa y que este se encargue de imprimir… pero aún así alguien tiene que seleccionar entre las diferentes impresoras y las opciones de impresión. No es algo nada sencillo.

      Saludos

  29. Hola Amigo y demas compañeros de TodoHacker necesito la sintaxis exacta con el comando que sea. para copiar archivos y carpetas de mi PC hacia otra PC y viceversa mediante el CMD.
    muchas gracias

    • Hola jzaldivarleyva,

      La forma más sencilla de pasar archivos de un ordenador a otro es utilizando un pen drive, pero supongo que te referías a pasarlo por red.

      Esto es algo que depende de muchos factores, en Linux como siempre es mucho más sencillo, pero Windows está varios pasos por detrás.

      La forma mas sencilla es que ambos ordenadores se encuentren en la misma red de Windows, el mismo dominio, o el mismo Workgroup y que tengan una carpeta compartida públicamente… Si esto es así podrás copiar archivos a la carpeta compartida del otro ordenador de la siguiente manera:

      xcopy /s/e c:\carpeta\origen \\ORDENADOR2\carpetaCompartida

      Esto copiará toda la carpeta «origen» de forma recursiva a la carpeta compartida del ordenador 2.

      Si los ordenadores no están en la misma red de la forma indicada anteriormente, la cosa se complica mucho.

      Saludos

  30. Hermano primero que todo muchas gracias por tu pronta respuesta y el tiempo que dedicas a este post.Estoy seguro que todos aqui estamos agradecidos porque exista un sitio como este porque si de aprender batch se trata hay que contar con esto. Y Si,a eso me refería
    a dos equipos por red. Con tu respuesta acabo de despejar varias dudas e hipotesis del tema, poniéndole fin de una vez. Muchas gracias y que Dios te bendiga.

  31. Hola existe un comando que pueda identificar archivo.

    Algo como:
    Si el archivo texto.txt existe en la carpeta documento entonces hace esto y sonó hace este otro.

    Existirá algo parecido como si fuera un if pero envés de que diga si o no de un comando quiero que sea de un archivo.

    Saludos…

    • Hola!

      Si existe, y es muy sencillo. Simplemente hay que añadir la palabra exists y especificar la ruta relativa o absoluta. Por ejemplo:

      if exists C:\archivo.txt echo EXISTE!
      else echo NO EXISTE!

      Saludos

  32. hola, quiza me puedas ayudar necesito progrmar un batch que cuando se ejecute programe una tarea en el programador de tareas de windows (valga la redundancia) para 45 dias mas donde muestre un msj con ciertas variables, ademas el nombre de la tarea no puede ser fijo ya que se crearan mas de una alerta diaria, cuando lo pense me imagina que seria mucho mas sencillo pero al parecer el comando no acepta variables como por ejemplo %date% en sus instrucciones, te dejo el codigo que estoy utilizando para crear la tarea.

    schtasks /create /TN ????? /TR «cmd /c ‘msg * hacer seguimiento a remesa cliente fecha %date%'» /SC ONCE /ST 10:00 /sd «%date%+45dias» /F

  33. Hola 4m1g0!Estoy tratando de crear un programa para borrar archivos, la idea es que me pida la unidad(como variable set/p un = Unidad), luego el nombre del archivo(como variable set/p arch = Archivo) y después elimine el archivo de la variable set/p = Archivo mediante el comando rmdir. Me funciona hasta el momento de borrar el archivo, yo lo tengo puesto como rmdir «%arch% /s /q» pero me dice que la sintaxis no está bien, necesito tu ayuda!

    • Hola,

      En batch lo que usas como variable se sustituye literalmente en el comando, así que es muy probable que si te dice que la sintaxis está mal es que sea la parte de la variable lo que da conflicto. Recuerda tambien que el comando RMDIR solo permite borrar carpetas no permite pasarle un directorio.

      Esto por ejemplo funciona correctamente si le pasas la ruta de una carpeta:

      set/p carpeta=Carpeta: 
      rmdir /s /q "%carpeta%"

      Lo pongo entre comillas por si el nombre tuviese espacios, de esta manera funciona igualmente. Si lo copias, reescribe las comillas a mano, por que a veces se copia un carácter diferente.

      Saludos

  34. Muy buenas tardes.
    Tengo una consulta, estoy realizando un script que va isntalar un programa mediante consola remota, el script funciona correctamente pero no puedo logar que me deje un log con el nombre de la máquina, les adjunto el ejemplo del Script.

    @echo off

    psexec @C:\Script\ListadoDePCs.txt -d -c -f \\ruta del script >>\\Maquina\log\»ACA QUIERO DEFINIR QUE UTILICE EL NOMBRE DE LA MAQUINA QUE TOMO DE @C:\Script\ListadoDePCs.txt» 2>&1

  35. Buenas tardes,
    Necesito un favor que tengo que generar un bat, que no tienen datos específicos dentro del archivo es decir son cambiantes todos los días yo estoy generando ya fijos no logro entender como realizar los bat sin datos fijos

    ejemplo DCYYYYYYYYAAMMDE- RESULTADO DEBE SER ESTE 09CDAAMMDEYYYYYYYYYYYY

  36. Buenas Tardes
    esta muy genial tu tutorial me ayudarías en 2 cosas?

    la primerra en sabes como llamar desde un .bat un proceso almacenado?

    y la segunda, como quito el encabezado al momento que en que el bat suelta el resultado en otro archivo?

  37. No se si esto sirva como broma o algo pero les comento que para poder poner un acceso directo y hacer que el ordenador se apague de manera inmediata, se usan los siguientes comandos:
    shutdown -s -t 03 -c «El ordenador cerrara la sesion, guarde sus archivos»

    shutdown -s ….sirve para programar el apagado.
    -t ………….nos indica el tiempo dentro del cual se apaga en segundos.
    -c…………..(opcional) introduce un comentario.

    NOTA: en caso se ejecute y no se deseaba apagar, se debe ejecutar shutdown -a
    para mayor info ejecuta en la MS-DOS shutdwon /?

  38. Hola hace poco descargue un arcrivo bat de una pagina de lol https://www.leagueofgraphs.com pense que era una grabacion que sale un boton donde sale para grabar la jugada de algun jugador que este jugando en el momento pero me parecio raro la extencion del archivo bueno la cosa es que el google chrome me lo marco como un virus y el antivirus tambien. Mi duda es sera un archivo dañino para la pc? Gracias y disculpe si molesto.

  39. Hola una pregunta existirá un comando que minimice toda las aplicaciones ejecutadas
    o que solo minimice las aplicaciones que desee

    Se que existe uno para cerrar ciertas aplicaciones pero existirá otra para minimizar

  40. Hola, Quiero ejecutar un bat para cambiar la extension de unos archivos , pero están en carpetas distintas. Hay forma de que se pueda ejecutar en todas las carpetas en simultaneo?
    Gracias de antemano.

    • Hay que ir poniendo la ruta de las carpetas donde quieras cambiar los archivos.
      Yo tengo una pregunta parecida.
      Se pueden cambiar la extension de los archivos de una carpeta y los de sus subcarpetas al mismo tiempo?

    • Este script, cambia las extenciones .txt a .jpg en un directorio, incluyendo los archivos ubicados dentro de los subdirectorios… utilizado por mi para obtener seguridad minima sobre mis archivos…

      @echo off

      for /f «tokens=*» %%_ in (‘dir /s /d /b *.txt’) do (call:renombra «%%_»)
      goto:eof

      :renombra
      set «name=%~n1»
      set «name=%name:~0,-1%»
      ren «%~1» «%name%.jpg»

  41. Buenas Tardes, antes que nada Muy buena Guia Am1g0!!,
    quisiera saber si es posible lo siguiente,
    agradezco mucho a los que me puedan dar una mano tamb

    Lo que quiero hacer es poder abrir un .exe a traves de un .bat, pero necesito que «ejecute» la app «WinClient.exe» (detallado mas abajo) como OTRO USUARIO, es decir
    Shift->Ejecutar como otro usuario,

    Para evitar estar escribiendo el usuario y password cada ves que necesite utilizar la App.

    @echo off
    //Ejecutar COMO OTRO USUARIO
    //USER: usurario
    //Pass: contraseña
    C:
    cd \App\App Client
    start WinClient.exe
    exit

    Desde ya muchisimas Gracias!!!

  42. Hola, como hago para que si un directorio tiene algún archivo lo mueva a otro directorio, pero si no hay ninguno no haga nada?
    Gracias.

  43. Hola 4m1go, necesito tu ayuda he hecho un menu .bat que al seleccionar por ejemplo el numero 1 me abre una pagina web especifica. El problema es que cuando apreto 1 me las abre las 3 ya que he puesto 3 paginas de momento. Como hago para que me las abra de manera separada? Osea que si apreto 1 me abra la pagina 1, no todas jaja.
    Aqui tienes el codigo:
    @echo off
    :menu
    cls
    color 02
    echo —–
    echo ———-
    echo —————
    echo ——————–
    echo ————————- LISTA SETS DE IMAGENES
    echo ——————————
    echo ———————————–
    echo —————————————-
    echo ———————————————
    echo ————————————————–
    echo 1.-001
    echo 2.-002
    echo 3.-003
    echo.
    echo.
    set /p ver=Que desea hacer?
    if %ver%==1 goto 001
    if %ver%==2 goto 002
    if %ver%==3 goto 003

    :001
    start https://filefox.cc/pizgdykdhiky
    :002
    start https://dfiles.eu/files/9npwr1exw
    :003
    start https://dfiles.eu/files/1l262mxrd
    pause >nul
    goto menu

  44. Buenas, tengo una duda. Quiero crear un programa que ejecute una combinacion de letras (sin necesidad de pulsarlas), unicamente que me ejecute esa accion. Por ejemplo un programa que ejecute CTRL + ALT + 5.
    ¿Seria posible realizar esa operacion?
    Es que no veo informacion relacionada con este caso.

    Muchas gracias por tu ayuda y muy buena informacion

    • Con la función Sendkeys en vbscript es posible… copia y pega estas lineas en un block de notas, luego guarda el archivo con la extension .vbs y ejecutalo, veras un pequeño ejemplo, de lo que se puede hacer usando sendkeys… pero debo advertirte algo, mientras se implementa el script debes mantener el foco de la aplicasion en ella asi evitaras se implemente en otro lugar, ya el codigo lo prevee con una instruccion incrustada en el, pero mientras lo ejecutes no abras ninguna ventana o aplicasion.

      ap=inputbox(«Indica tus apellidos por favor»,»:Hecho por jose romero»)
      n=inputbox(«Indica tus nombres por favor amigo (a), » & ap,»:Hecho por jose romero»)
      ed=inputbox(«Indica tu edad en números por favor amigo (a), » & n & » » & ap,»:Hecho por jose romero»)
      msgbox «Voy a escribir tu nombre amigo ‘» & n & » ‘ y tambien tus apellidos que me dijiste son ‘» & ap & «‘ ; ademas de tu edad ‘» & ed & «‘ , en un archivo de texto que se escribira automàticamente… Sòlo presiona aceptar y mira..»,,»Hey, » & n & » » & ap
      Set MiShell = Wscript.CreateObject(«WScript.Shell»)
      Set MiPrograma = MiShell.Exec(«notepad»)
      Wscript.Sleep 3000 ‘Espero 3 segundos
      MiShell.AppActivate Miprograma.ProcessID ‘Llevo el foco a la aplicación, para prevenir se implemente el codigo fuera de ella
      Wscript.Sleep 100 ‘Espero un tiempo para simular la pulsación del teclado
      Mishell.SendKeys «T»
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys «u »
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys » t»
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys «e »
      Wscript.Sleep 500 ‘
      Mishell.SendKeys » ll»
      Wscript.Sleep 500 ‘
      Mishell.SendKeys «a»
      Wscript.Sleep 500 ‘
      Mishell.SendKeys «m»
      Wscript.Sleep 500 ‘
      Mishell.SendKeys «as »
      Wscript.Sleep 500 ‘
      Mishell.SendKeys n & » »
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys ap
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys » y»
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys » tienes »
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys ed
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      aa=2016-ed
      Mishell.SendKeys » años»
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys «, naciste »
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys «en el »
      Wscript.Sleep 500 ‘ Escribo lo q quiero
      Mishell.SendKeys «año de » & aa
      Wscript.Sleep 500 ‘ Escribo lo q quiero

  45. Alguien me podria recomendar algun tutorial batch avanzado y tan completo como sea posible. Por que hay muchas cosas que yo no se y quiero mejorarme.
    Por favor

  46. Hola, x favor le suplico un poquito de su tiempo… Instalo Programas y les agrego mas recursos. Las carpetas con esos recursos estan dentro de 2 archivo.exe creado con winrar y se ejecuta con este comando… Path=%ProgramFiles%\RocketDock\Icons para win32bit… y Path=%programfiles(x86)%\RocketDock\Icons para 64bits… como seria un bat que me identifique el OS sea 64-32 bit y de acuerdo a ello me agregue esta carpeta de recursos para no tener que cargar varios instaladores… disculpe si no me explique bien… muchisimas gracias x su tiempo y dedicacion, al apoyarnos con sus ricos conocimientos.

    • @echo off

      if exist %windir%\syswow64 (goto X64) else (goto X86)

      :X64

      %programfiles(x86)%\RocketDock\Icons

      exit /B 1

      :X86

      %ProgramFiles%\RocketDock\Icons

      exit /B 1

  47. Hola a todos
    primero que todo esta muy bueno el post, feliceidades a @4m1g0.
    he estado viendo diferentes tutoriales pues estoy creando un *.bat(en WIN) para hacer compresiones, renombrar, copiar mover y renombrar, pero, no he logrado dar con una instruccion especifa. Trato hacer que mi *.bat guarde y almacene la ruta donde el se encuentra, pues asi puedo dar la instruccion a otros ejecutables para que operen sobre los archivos, para no tener que estar cambiando la ruta cada vez que mueva el bat de un lado a otro. ¿Saben de algo que me podría ayudar?. se los agradeseria

  48. Hola estoy haciendo un fronted de juegos, pero algunos de ellos son exe. Y puedo arrancar estos exes lo hago con un bat ya que el exe no lo reconoce este fronted.Si es con unsa direccion fija no tengo problema uso esto

    cd «I:\EmulationStation\emulationstation\roms\locomalito\Gaurodan\»
    I:
    Gaurodan.exe

    Me funciona el problema es que no se como hacerlo desde una ubicacción distinta para que arranque el ex por ejemplo, quisiera iniciar desde la carpeta
    locomalito y el exe lo tendria así locomalito\Gaurodan\Gaurodan.exe.
    Entonces como podría llamar desde esa ubicación, asi´poder usar todo de forma portable en un usb.Gracias

    • Jajajaja me respondo yo mismo, recordé una cosa de python y me ha funcionado.Mira que llevo todo el día buscando

      cd «*\Gaurodan\»
      Gaurodan.exe

      ahora me gustaría que no se viese la ventana de cmd mientras arranca el exe sin usar un archivo vbs

      • si me sirve si , en el caso de hacerlo mediante click ratón ,pero cuando el programa lo llama dice que windows no sabe donde esta el archivo

      • Compila los .bat con Bat To Exe Converter, usando la opcion de invisibilidad que te da ese compilador, de esa forma usas un solo archivo y logras ambas cosas, ejecucion del exe de forma invisible…

  49. Hola amigos, disculpen los moleste… necesito por favor me ayuden a crear un archivo .bat, que cree un archivo de texto, con el nombre de usuario de quien lo ejecute, mas el nombre del equipo desde donde se ejecuta y luego los verifique, para compararlos con datos que yo le aporte, para luego ejecutar o no una linea de codigos. Me explico quiero que el .bat solo se ejecute en un equipo con un usuario especifico que yo le señale, si falla la verificasion del nombre de usuario o el nombre del equipo, cualquiera de los dos datos, simplemente se salga y no ejecute nada, gracias de antemano… quien me ayude a crear este .bat, le regalare una licencia PREMIUM de Malwarebytes Antimalware… este es mi email, [ELIMINADO] pueden escribirme alli…

    • Okey… por si a alguien le es util, logre hacer lo que queria con un vbscript File… en el que defino Nombre de Equipo y Nombre de Usuario, si el nombre de Equipo es correcto redirije a la verificacion de Usuario, si no es correcto sale de la implementacion del script… si el Usuario no es el correcto, ni modo sale de la implementacion y no se ejecuta el archivo, aca se los dejo corre con credenciales de Admin…

      On Error Resume next

      If WScript.Arguments.Named.Exists(«elevated») = False Then
      ‘Launch the script again as administrator
      CreateObject(«Shell.Application»).ShellExecute «wscript.exe», «»»» & WScript.ScriptFullName & «»» /elevated», «», «runas», 1
      WScript.Quit
      Else
      ‘Change the working directory from the system32 folder back to the script’s folder.
      Set oShell = CreateObject(«WScript.Shell»)
      oShell.CurrentDirectory = CreateObject(«Scripting.FileSystemObject»).GetParentFolderName(WScript.ScriptFullName)

      Dim obj
      set obj = CreateObject(«Wscript.shell»)

      If obj.ComputerName = «XXX-PC» Then

      If obj.userName = «xxx» Then

      Set objShell = CreateObject(«Wscript.Shell»)
      objShell.Run(«XXXX.exe»),,True

      Else

      wscript.echo «No estas Autorizado para usar este Software»

      ‘Si el usuario no es el correcto termina y sale…

      End if

      Else

      wscript.echo «No estas Autorizado para usar este Software»

      ‘Si el Equipo no es el correcto termina y sale…

      End if

      End if

    • @echo off

      «%SYSTEMROOT%\system32\net.exe» stop «mysql»

      shutdown -s -t 60

      REM Si deseas apagarla antes, cambia 60 por menos segundos

  50. Haber tengo un pequeño problema que para lo que me hace no es nada grave pero me molesta tengo un bat que borra todos mis partidas guardadas pero hace una copia de seguridad antes (para los fines de semana que salgo de «trabajar») pero cuando lo inicio es como si no activará el echo off haciendo esto que se vea feo alguna idea de por qué pueda ser?

  51. muy buen tutorial y espero me puedes ayudar
    quiero crear un .bat que ejecute una serie de comandos hacia mysql ejemplo
    que ejecute mysql -u root – p y use database
    sabras que intruccion usar para hacer que ejecute esos comandos entre otros mas.?

    saludos

  52. Hola a todos quisiera que me ayudaran en lo siguiente
    quisiera aser un programa que me buesque dentro de los prosesos del sistema uno espesifico y que lo cierre se cerrarlo con:
    taskkill /firefox.exe /F
    pense en listarlos todos, guardarlos en un txt y loego recorrer el txt y si esta, cerrarlo como explique arriba.
    pero quisiera saber si ay otra manera.
    saludos y gracias de antemano

  53. Hola buenas muy interesante este mundo, no me manejo mucho pero quiero tratar de aprender ya que necesito saber si se puede a trabes de esto si puedo lograr que una programa se ejecute en la segunda pantalla que tengo. Saludos y si puedes orientarme seria genial

  54. Buenas tardes, estoy armando una calculadora en batch, el problema es que quiero comprobar que el usuario solo ingrese números y no letras, gracias

  55. Hola buen día..
    Necesito crear un .bat que detecte cuando el proceso Scanner.exe se detenga o no muestre consumo de CPU, y cuando esto ocurra el proceso Scanner.exe se reanude su ejecución.

    ya intente de varias formas pero no puedo encontrar esta solución para que un archivo .bat detecte cuando el proceso este detenido o haya generado un error.

    ojala pudieran ayudarme.

  56. Tengo un problema con un molesto virus de USB

    Habrá algún comando cmd que lo pueda eliminar, lo que hace este virus convierte todas mis carpetas del USB en aplicación y los otros archivos me lo hace igual y los mueve a otra carpeta.

    Ya intente con algunos comandos pero no funciona

  57. @echo off

    SETLOCAL DisableDelayedExpansion
    FOR /F «usebackq delims=» %%a in (`»findstr /n ^^ t.txt»`) do (
    set «var=%%a»
    SETLOCAL EnableDelayedExpansion
    set «var=!var:*:=!»

    Echo !var!
    echo.

    )
    set valTextContador= !var!
    Echo %valTextContador%
    echo.
    set valor= 1
    echo.
    Echo %valor%
    set/a suma= %valTextContador% + %valor%
    echo.
    echo %valTextContador% + %valor% = %suma%
    echo.
    echo borrar archivo T.txt y agregar el nuevo valor
    del t.txt
    echo.
    echo %suma% > t.txt
    echo.

    If %suma% EQU 1 (goto 001) else (goto 002)
    :001
    start C:\Users\LEON\Desktop\windows_bat\texto1.txt
    exit/B1
    If %suma% EQU 2 (goto 002) else (goto 003)
    :002
    start C:\Users\LEON\Desktop\windows_bat\texto2.txt
    exit/B1
    If %suma% EQU 3 (goto 003) else (goto salir)
    :003
    start C:\Users\LEON\Desktop\windows_bat\texto3.txt
    exit/B1
    If %suma% EQU 4 goto salir
    :salir
    exit

    Mi problema es el siguiente, en el if numero 2 se me encicla y no pasa al if numero 3

  58. Hola no entiendo mucho pero aquí te mando lo que acabo de hacer, lo que trato de hacer es activar la red hospedada trato de que si me da error en la activación salga desactivado y si se completa salga activado en una ventana.
    @echo off
    netsh wlan set hostednetwork mode=allow ssid=SKYNET key=terminator
    set estado= netsh wlan start hostednetwork
    set skynet= if %estado%==se inició la red hospedada goto Activado else Desactivado
    msg * Estado de SKYNET : %skynet%
    exit

  59. Hola, no entiendo por que mi codigo no funciona si pudieras revisarlo a ver cual es error 🙂
    La funcion de este codigo es poner un mensaje protegido con una contraseña
    codigo:
    @echo off

    set tries=3
    set pasword=1234
    color 0a
    :str
    set /p contraseña=Writte the pasword:
    echo.
    echo.
    echo Intento %tries%
    if %pasword%==%contraseña% (goto corretc) else goto intentos

    :intentos
    if tries==0 (goto fail) else set /a %tries%=%tries%-1
    goto str

    :fail
    start

    :correct
    echo contraseña correcta.
    pause
    pause>nul
    exit

  60. Hola Amigo, necesito ejecutar un programa de forma desatendida en el arranque de Windows, el problema que tengo es que este programa pide usuario y contraseña, el programa recuerda el último usuario con el que se accedió y al volverlo a ejecutar muestra dicho usuario, pero aunque no tenga contraseña pide pulsar OK, o escribir la contraseña y pulsar enter.
    ¿Existe una especie de pila donde guardar la contraseña y una vez ejecutado el programa coja la contraseña de esa pila?
    ¿Cómo lo podría solucionar?
    Gracias.

  61. Hola, cómo podría automatizar las configuraciones a través de Bach. Es decir, cuando se da click derecho te sale la parte de un montón de opciones, como puedo acceder a cada opción, y escalar las siguientes opciones.

Webmenciones

  • Elimina los *.bak y *.log que crea el Autocad con Batch en Windows - Jonathan Macalupu 14 noviembre, 2019

    […] Nota: Si quieren saber más sobre ello, existe un tutorial básico en todohacker.com y bueno, que puede ayudarnos a entender mejor la herramienta poderosa que Microsoft pone a nuestra disposición: https://todohacker.com/tutoriales/lenguaje-batch […]