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

Si no sabes lo que es el eco prueba a quitar @echo off y veras 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

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

PARTE 2

El comando cls sirve para borrar la pantalla.

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%

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

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í:

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.

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.

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

 

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:

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.

Prueba a cambiar los colores para entenderlo mejor.

cmd110 cmd210

 

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 ola>archivo.txt esto escribiría ola 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.

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 ola 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.

 

 

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.

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

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 q se llamen “archivo” sean de la extensión q 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 q empiecen por a
del nombre.d* borraría todos los archivos q se llamen “nombre” y q 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.

84 Respuestas a Lenguaje batch tutorial y comandos básicos .bat

  1. Ricardo dice:

    Muy buen tutorial 🙂

  2. Jon dice:

    Felicidades por el tutoríal.
    ¿Como se usa el comando msg? he probado msg * lo que sea *; msg ( lo que sea );msg ¨lo que sea ¨.
    Para que cuando se ejecute una variable salga un ventana de mensaje . Pero no me aparece nada.
    Practicare tus ejemplos.
    Muchas gracias.

    • 4m1g0 dice:

      Hola,

      Muchas gracias por tu comentario y perdona la tardanza en contestar.

      El comando msg puedes usarlo de esta forma:
      msg * “hola”

      Esto saca un mensaje con la palabra “hola”.

  3. Gerson dice:

    Me ha servido mucho,gracias 4m1g0 , es muy util 🙂

  4. Angel Avila dice:

    Me a servido de mucho tu tutorial, si pudieras ayudarme un poco necesito crear un bat que al ejecutarlo pulse la tecla F4 en el teclado automaticamente una sola vez.
    Gracias de antemano.

  5. Dardo dice:

    Gracias por compartir tu conocimiento. Quiero empezar a conocer más a fondo el código y me ha sido útil como material de inicio.

  6. pancho dice:

    ¿puedo hacer que el programa ejecute una imagen?, ya lo intente con el comando
    start nombredelaimagen.jpg o .png o inclusive ya intente exportar la imagen con extencon .txt
    pero siempre me manda el aviso de que no se a encontrado el archivo, y no es problema el que no encuentre la imagen porque tengo el programa y la imagen en la misma carpeta.

    • 4m1g0 dice:

      Widnows utiliza la extensión del archivo para determinar con que programa debe abrirlo. De esta forma, si ejecutas start imagen.jpg por ejemplo, el sistema debería buscar un programa instalado que pueda abrir jpg y utilizarlo.

      Si esto no te está funcionando, siempre puede forzar a usar un programa concreto, pero tienes que saber de antemano que este programa está instalado en el ordenador donde ejecutas el código.

      Por ejemplo: firefox.exe imagen.jpg

      ¿Que sistema operativo estás usando en concreto?
      Saludos

  7. S. Eugenio dice:

    Muchas gracias por el material, estoy entrando en el mundo de la informática y me sirvió de mucho.

  8. pepa pig dice:

    hola mundo

  9. Kashbir Jamett dice:

    Buenas! tio me ha servido de mucho esto. Estoy recien aprendiendo del tema pero hay un par de cosas que no logro que me resulten. No se si podrás ayudarme.

    Creo un archivo de texto en la unidad “C:\Prueba.txt” este contiene un texto de 5 líneas en el cual encontramos la palabra “Queso”. Ahora debo crear un batch el cual busque la palabra “Queso” con el comando find u otro compatible dentro de “C:\Prueba.txt” y de encontrarlo pues cerrar cmd (con exit) pero de no encontrarlo apagar el ordenador (shutdown /s). Alguna sugerencia? Gracias!!

  10. Kashbir Jamett dice:

    No se si es posible lo que he pedido xd

  11. Nelson Cardona dice:

    Muy bueno, me ha servido de guia para un super bath que tengo que crear, aunque no vi cómo ejecutar archivos .exe o .msi

    • 4m1g0 dice:

      hola,

      Para ejecutar un .exe simplemente tienes que escribir su nombre, estando en la misma carpeta, o escribiendo la ruta completa.

      Por ejemplo si tienes un ejecutable llamado “programa.exe” en el escritorio, simplemente tienes tienes que navegar hasta el escritorio (Con el comando cd) y ejecutar “programa” o “start programa”

      Saludos!

  12. Kashbir Jamett dice:

    ya lo consegui xD, con tu ejemplo! gracias tio!

  13. Razsmus dice:

    Hola!Muchas gracias , realmente me a servido!Muy bien explicado también!
    Pero tengo una sola pregunta:
    En “if variable==” hay alguna manera de agregar más de una respuesta correcta por decirle?
    No se si me explico muy bien!Pero de vuelta te agradezco.

    P.D:Llegué un año tarde 😀

    • 4m1g0 dice:

      Hola!

      ¿Por que un año tarde? jeje

      Lo ideal en cualquier lenguaje de programacion sería utilizar operadores lógicos, como OR y AND, asi podriamos decir: if x OR y… el problema es que en batch NO EXISTEN.

      Sin embargo podemos hacer lo que dices utilizando diferentes if en el orden correcto, por ejemplo:

      if %variable%==4 goto correcto
      if %variable%==5 goto correcto
      if %variable%==8 goto correcto
      goto incorrecto
      :correcto
      echo Bien!
      :incorrecto
      echo Mal!

      De esta forma las respuestas 4, 5 y 8 serían correctas y todas las demás incorrectas. Espero que se entienda. Cualquier cosa me dices 😉

      Saludos!

  14. overkiller dice:

    Hola amigos

    tengo unas replicaciones con oracle goldengate y necesito crear un .bat que abra el proceso de goldengate y ejecute un INFO ALL, pero solo logro hacer que el bat ejecute el proceso correspondiente pero no que tire el comando INFO ALL? como podria lograrlo y ademas guardar el resultado en un .txt?

  15. Manuel dice:

    Hola, estoy intentando usar el comando Exist para una carpeta que contiene espacios, ademas el nombre del fichero tambien tiene espacios y em esta devolviendo un error comopodria solucionar esto? gracias

    • 4m1g0 dice:

      Hola,

      Perdona la tardanza en contestar.

      Para hacer referencia a una ruta o nombre de archivo/carpeta que contiene espacios, basta con ponerlo entre comillas.

      if exist “nombre con espacios.txt” …

      Saludos

  16. Edicxón dice:

    como puedo realizar un archivo .bat para ejecutar dos redes en mi PC esto debido ha que hay programas que solo abren con la area local “LAN” y si estoy conectado a un Cable modem “CM” tambien en la misma PC con otra tarjeta de red no puedo abrir estos programas en especifico me dan error.

  17. Orestes dice:

    Hola 4m1g0: En mi opinión, tu aporte es importante, sólo que he notado una pregunta no atendida, aquella sobre pulsar la tecla F4 mediante batch.
    Entonces, ¿cómo enviar pulsaciones de teclas especiales mediante .bat?

  18. hack 21 dice:

    la verdad es que con el lenguaje bach no puedo poner el exponente no se me questa mucho de entender, como puedo hacer para poner exponente

    • 4m1g0 dice:

      Hola hack21,

      Había un error en el tutorial que ya fue corregido, como ya te habrás dado cuenta, en batch no es tan fácil elevar un numero a una potencia. Pues no existe un operador para hacerlo.

      Para conseguirlo tenemos que hacer un bucle y multiplicar por el mismo número las veces que sea necesario. Aquí tienes un ejemplo:

      set result=1
      set i=1
      :multiply
      set /a result=result*x
      set /a i=i+1
      if %i% lss %n% goto multiply
      echo %result%

      Saludos

  19. hack 21 dice:

    Gracias por tu respuesta pero siento decirte que no me reconece multiply como un comando interno o externo, programa o archivo por lotes ejecutable. No se pruevalo lo he echo así
    @echo off
    color 0a
    :principio
    set /p num1="Introduce el PRIMER numero: "
    set /p num2="Introduce el SEGUNDO numero: "
    echo ESCRIBE EL NUMERO UNO PARA EXPONENTE
    set /p op="¿Quieres poner exponente?
    set result=1
    set i=1
    :multiply
    set /a result=result*x
    set /a i=i+1
    if %i% lss %n% goto multiply
    echo %result%
    set /p caso="Quieres seguir el programa de calculadora, escribe si o no:"
    if %caso% == si (goto :principio)
    if %caso% == no (goto :salir)
    :salir
    exit
    pause
    goto:eof

    saludos

    • 4m1g0 dice:

      Perdona, es que no copié todo el script, falta definir la variable n y por eso da error.

      Este lo puedes ejecutar tal cual:
      set result=1
      set n=5
      set x=2
      set i=1
      :multiply
      set /a result=result*x
      set /a i=i+1
      if %i% lss %n% goto multiply
      echo %result%
      pause

      Hace 2 ^ 4 y por lo tanto debería dar 16.

      Pruebalo y me dices.
      Saludos

  20. hack 21 dice:

    Gracias, lo que tu me dices està bien, pero solo da 16, osea le pones 18^5=16
    entonces que tengo que hacer dar mas valores a x?
    siento agobiarte pero esto me esta gustando mucho!!
    @echo off
    color 0a
    :principio
    set /p num1="Introduce el PRIMER numero: "
    set /p num2="Introduce el SEGUNDO numero: "
    echo ESCRIBE EL NUMERO UNO PARA EXPONENTE
    set /p op=”¿Quieres poner exponente?
    set result=1
    set n=5
    set x=2
    set i=1
    :multiply
    set /a result=result*x
    set /a i=i+1
    if %i% lss %n% goto multiply
    echo %result%
    pause

  21. hack 21 dice:

    Introduce el PRIMER numero: 2
    Introduce el SEGUNDO numero: 2
    ESCRIBE EL NUMERO UNO PARA EXPONENTE
    Quieres poner exponente?1
    16
    Presione una tecla para continuar . . .
    esto es lo que me da siempre

    • 4m1g0 dice:

      Hola otra vez.

      Me alegro mucho de que te haya enganchado esto de la programación, yo llevo más de 15 años enganchado y ahora me dedico profesionalmente a ello.

      Vamos a verlo con cuidado, fíjate en la parte que hace la multiplicación:
      set /a result=result*x

      result empieza valiendo 1 y lo multiplicamos por x que lo hemos asignado a 2, mas arriba. Una vez hecho esto, result pasa a valer 2*1=2 luego incrementamos el valor de i: set /a i=i+1 y comprobamos si “i” es menor que “n”. “n” vale 5 (set n=5) por lo volvemos a la etiqueta :multiply. Vamos a repetir esto 4 veces (i=1, i=2, i=3, i=4). ¿Hasta aquí bien?

      El problema es que tu asignas arriba num1 y num2, pero no los usas en la operación. En lugar de estas variables, puedes pedir que el usuario inserte x y n directamente.

      Quedaría algo así (he puesto que i empiece en 0):

      @echo off
      color 0a
      set /p x=”Introduce la BASE: ”
      set /p n=”Introduce el EXPONENTE: ”
      set result=1
      set i=0
      :multiply
      set /a result=result*x
      set /a i=i+1
      if %i% lss %n% goto multiply
      echo %x% elevado a %n% es: %result%
      pause

  22. hack 21 dice:

    muchas gracias
    si tengo otra duda te lo preguntare 4m1g0
    si te suena raro que te pregunte tanto es porque tengo 10 años y me cuesta un poco

    • 4m1g0 dice:

      Perfecto!

      Puedes preguntar todo lo que quieras, es normal que cueste un poco al principio, tengas la edad que tengas. Pero vas por muy buen camino 😉

      Tenemos también un foro aquí: https://todohacker.com/forum/preguntas/
      Si tienes otras dudas no relacionadas con este tutorial o quieres comentar alguna cosa en concreto puedes ser el primero en escribir.

      También si te apetece compartir lo que vas haciendo puedes hacerlo ahí, que seguro le es de utilidad a mucha gente.

      Un saludo y ánimo con eso!

  23. hack 21 dice:

    Ultimamente he estado mirando y he visto que en batch se pueden hacer cosas pero no muchas, por lo tanto queria preguntar, ¿que otro lenguaje de programacion seria mas util, para hacer programas mas elavorados?
    Por ejemplo el php, o ya tienes que tener una base un poco amplia de programacion…
    alguin me aconseja?
    saludos 🙂

  24. hack 21 dice:

    mi amigo 4m1g0, mira lo que he logrado yo solo excepto la raíz cuadrada:

    • 4m1g0 dice:

      Hola,

      ¡¡Impresionante!! Has avanzado un montón, me ha gustado mucho y te lo he puesto con formato resaltado, por que creo que además le va a ser muy útil como ejemplo a otra gente que también este haciendo sus programas en batch. Enhorabuena por el trabajo y gracias por compartirlo!

      Con respecto a la otra pregunta, batch es un lenguaje que se usa bastante a día de hoy para administrar sistemas, por que permite automatizar tareas como copiar archivos, renombrar ficheros en bloque, etc. de forma más rápida.

      Pero si quieres avanzar más (y parece que si) haces muy bien en plantearte otros lenguajes. En general no vas a necesitar nada más que constancia y paciencia para aprender cualquier lenguaje, ya eres autodidacta y eso te permite llegas hasta donde tu quieras.

      Con respecto a los lenguajes, depende de lo que quieras hacer. Con tecnologías web (php, html, css, javascript) vas a poder hacer cosas muy chulas pronto, sin duda es un buen comienzo. Y si quieres algo de “escritorio”, Python es un lenguaje muy potente hoy en día, y no es muy complicado de aprender.

      Te voy a hacer algunas preguntas, para poder aconsejarte mejor:
      ¿Tienes alguna preferencia con respecto a lo que quieres hacer?
      ¿Tienes idea de como funciona una página web por dentro?
      ¿Te suena el sistema operativo Linux?

      Un saludo!

  25. hack 21 dice:

    Lo que quiero hacer es programar apps hacer paginas web y si llego que no creo para programar juegos como Call Of duty ya que soy un fanático y me vicio
    La verdad es que no se como f funciona una pagina web pero me gustaría aprender. El saber no ocupa lugar.
    El sistema linux me suena ya que con el se pueden adaptar todas las apps a tu gusto programando. De hecho mi padre me ha comprado una rasbery pi o algo así que lleva un sistema operativo linux.
    La rasbery pi es un pequeño ordenador que tiene todos los juegos retro, una pasada , también lleva esto del linux y por ultimo como un sitio para ver pelvis por estriming
    Si tienes otras preguntas me preguntas igual que yo a ti
    Saludos un fuerte abrazo

    • 4m1g0 dice:

      La buena noticia es que si vas a poder programar juegos como Call of duty, pero para llegar a eso hace falta mucho tiempo y esfuerzo, por lo que no te desanimes si ves que vas muy poco a poco, es normal. Además un juego tan grande se hace entre bastantes personas y se tarda años en terminar, pero vas a poder hacer juegos más pequeños y en el futuro si te gusta podrás trabajar con un equipo de gente donde hagas juegos como ese.

      Con respecto a Linux, te lo preguntaba, por que como bien has dicho, es un sistema operativo (igual que windows) pero libre, es decir, todo el código de programación que lo constituye está disponible para leerlo y estudiarlo, además todos podemos contribuir a su mejora y modificarlo como queramos. Por eso considero que es un “lugar” estupendo para aprender. Si tienes la oportunidad de instalarlo y jugar un poco con el te lo recomiendo.

      Rasberry PI es un ordenador con la misma filosofía, toda su estructura hardware es libre (puedes verla aquí). Y usa linux, por lo tanto puedes usarla para programar en ella con python por ejemplo (es más fácil hacerlo que en windows), pero los programas que hagas podrás hacerlos funcionar en windows también.

      Dicho todo esto, creo que lo mejor es que empieces por el mundo web, si te apetece hacer una página web puedes aprender bastante rápido y eso te va a ayudar a familiarizarte con algunos conceptos antes de seguir. Voy a buscar algún enlace donde puedas leer sobre esto y te lo paso, en cualquier caso, si quieres ir investigando por tu cuenta, puedes ir empezando y me cuentas que te parece y si lo ves interesante.

      Saludos

  26. 4m1g0 dice:

    Hola Hack 21,

    Te recomiendo este enlace para que vayas aprendiendo como funcionan las páginas web: https://desarrolloweb.com/manuales/publicar-webs-internet.html

    Échale un vistazo y me dices si te gusta 😉

  27. hack 21 dice:

    muy interesante gracias
    Por lo que he visto es como una pàgina que te enseña todo sobre lo que quieres programar
    Me a gustado mucho
    Estas dos setmanas que quedan, seguramente no podre hacer nada ya que estoy en setmana de examenes.
    un fuerte abraço
    hasta la vista:)

  28. hack 21 dice:

    A y por cierto el ultimo dia estube mirando de como hacer el efecto matrix en batch, pero lo que dicen en los videos , no es matrix
    podrias ayudarme o no sabes comoo se hace ?
    O se puede hacer con batch? O se tiene que escribir con otro lenguage?
    espero tu respuesta
    saludos
    XD

    • 4m1g0 dice:

      Perdona, no había visto tu mensaje.

      No se exactamente cual es el efecto matrix, con la consola de windows (cmd) ya sabes como poner las letras en el color que quieras, luego lo que puedes hacer es imprimir con echo, pero no puedes cambiar lo que ya está escrito arriba (hasta donde yo se).

      Con una librería gráfica (y otro lenguaje) podrías dibujar lo que quieras como quieras en la pantalla, pero es mucho trabajo para conseguir solo eso. Te recomiendo dejarlo par más adelante. 🙂

  29. rubens dice:

    Hola, me ha gustado mucho tu post. Entiendes algo de parámetros? Se que no hablas de ello en el tutorial pero igual podrías ayudarme.

    El caso es que tengo que hacer un bat donde si el tercer parametro vale copiar o mover que copie el parametro 1 al directorio del parametro 2, y si el tercer parametro no vale ninguna de esas dos opciones tiene que dar mensaje de error. También debe dar un error si el archivo o el directorio no existen. No lo entiendo.
    Tal como lo tengo actualmente me sale así al ejecutarlo.

    1 archivo(s) copiado(s)
    La sintaxis del comando no es correcta.
    La sintaxis no es correcta

    @echo off

    if #%3# == ## goto error

    if not exist %1 goto error

    if not exist %2\nul goto error

    if #%3# == #copiar# goto copiar

    if #%3# == #mover# goto mover

    :copiar

    xcopy %1 %2 /r /s

    :mover

    move %1 %2 /r /s

    :error

    echo La sintaxis no es correcta

    :fin

    • 4m1g0 dice:

      Hola,

      El primer problema es que después de hacer la operación correspondiente, no saltas a :fin. Por lo tanto el programa sigue ejecutando la siguiente linea, en lugar de terminar. Esto se solucionaría poniendo “goto fin” despues del comando xcopy y del comando move.

      En segundo lugar. En el caso del comando move, no son necesarios los parámetros /r y /s (no existen).

      Espero que te sea útil. Cuéntame si lo consigues 😉

      • rubens dice:

        Muchas gracias ahora entiendo porque me iba siempre a error aunque copiara, era porque faltaba enviarlo a fin después de hacer la operación, y lo de /r y /s no se porque lo puse, lo quite y ahora ya funciona todo bien.

        Otro problema que tengo con otro bat, debe recibir 3 parametros, si recibe más o menos dara error. Si el numero de parametros es correcto debe validar que se cumplen las siguientes condiciones

        • El valor del primer parámetro es /a
        • El valor del segundo parámetro es /b
        • El valor del tercer parámetro es ABC

        Si no se cumple ninguna condición muestra mensaje de error y finaliza.
        No se que estoy haciendo mal.

        @echo off

        :Inicio
        set a= /a /b ABC

        if #%4# == ## (
        shift

        echo El valor del primer parametro es %1
        echo El valor del segundo parametro es %2
        echo El valor del tercer parametro es %3

        goto fin

        )

        if not #%3# == ## (

        echo Error

        )

        :fin

        • 4m1g0 dice:

          Hola,

          ¿Por que utilizas el comando shift? Este comando lo que hace es desplazar los parametros una posición, con el objetivo de poder recorrer todos los parámetros en un bucle. Pero en tu caso no se exactamente que es lo que querías hacer.

          La forma fácil, es ir uno por uno comprobando los 3 primeros parámetros con 3 “if” de esta forma:

          if not #%1# == #/a# goto error
          if not #%2# == #/b# goto error
          […]

          De la misma forma puedes comprobar que no exista el parámetro 4 con otro if más.

          Espero que esto te ayude a continuar. Cuéntame que tal y si no te sale lo vamos viendo juntos.

          Por curiosidad, ¿quien te pide este tipo de problemas? Me parecen muy interesantes.

          Saludos

          • rubens dice:

            Vale, le puse 4 if not para que me de error en caso de invocar más o menos de 3 parámetros, porque si le pongo solo 3 if not, cuando invoco con más o menos de los necesarios no me da error.
            Estoy estudiando Desarrollo de apps multiplataforma y en el módulo de sistemas estamos dando batch y empezamos también con scripts en ubuntu.
            La verdad que me está costando mucho y eso que no es tan difícil.

  30. 4m1g0 dice:

    Hay que ir poco a poco, no se puede asimilar en un día, pero en cuanto lo vayas entendiendo se te volverá cada vez más fácil.

    Si tienes dudas con los de bash en Ubuntu también puedes preguntar 😉

    Ánimo!

  31. Alejandro dice:

    Hola, soy nuevo en esto… tengo la necesidad de crear un bat que renombre un archivo csv con la fecha del día en que se ejecuta. tengo una tarea programada en un servidor que me genera un informe diario pero si no lo renombro todos los días este se sobrescribe. se me esta convirtiendo en un verdadero problema.

    he intentado con varios bat que he visto en internet pero no he logrado conseguir que se renombreel csv.

    quedo atento

    • 4m1g0 dice:

      Hola Alejandro,

      Para obtener la fecha en batch puedes usar la variable %date% el problema es que dependiendo del idioma el formato varía.

      En mi caso si hago: echo %date% me devuelve: Wed 03/15/2017

      Si en tu equipo el formato tambien es ese puedes obtener cada parte así:
      Día: %date:~7,2%
      Mes: %date:~4,2%
      Año: %date:~-4%

      Entonces podrías renombrar el archivo así: move archivo.txt %date:~-4%-%date:~4,2%-%date:~7,2%.txt

      Espero que se entienda, si en tu caso el formato de fecha es distinto, hay que recortarlo de otra forma. Si no lo consigues pon aquí el resultado de hacer echo %date% y lo vemos.

      Saludos

  32. rubens dice:

    De momento con bash no tengo problemas pero se me va a complicar, lo estoy viendo.
    Necesito que me ayudes con otro bat, sobre una agenda, tengo todo hecho pero me falta un bat que modifique registros de la agenda. Para modificar primero le doy el DNI y luego me sale un menu con 3 opciones a elegir entre modificar nombre que sería la opción 1, apellido opción 2 y telefono opción 3. Más alla de eso no se como seguir. Cada uno de esas opciones las mando al for, que es lo que no me sale

    :nombre
    set /p modificar= Escriba el nombre a modificar:
    set /p mod= Escriba el nuevo nombre:
    goto modif

    :apellido
    set /p modificar= Escriba el apellido a modificar:
    set /p mod= Escriba el nuevo apellido:
    goto modif

    :telefono
    set /p modificar= Escriba el telefono a modificar:
    set /p mod= Escriba el nuevo telefono:
    goto modif

    :modif
    for /f “tokens=1-4 delims=:” %%i in (Agenda.txt) do (
    set “linea=%%i”
    set linea=!linea:%modificar%:%mod%!
    If %%i == %DNI3% (echo DNI: %%i Nombre: %%j Apellidos: %%k telefono: %%l)
    Echo %linea% >> Nueva_Agenda.txt
    )
    Del /Q “Agenda.txt”
    Rename “Nueva_Agenda.txt” “Agenda.txt”

    • 4m1g0 dice:

      Hola Rubens,

      La verdad es que la cosa se está poniendo complicada…

      No entiendo que haces en esta linea: set linea=!linea:%modificar%:%mod%!
      Que significan las exclamaciones? es parte de la sintaxis del archivo agenda.txt?

      Por otro lado, entiendo que al principio del programa preguntas que quiere modificar: nombre, apellido o telefono.

      Dentro del bucle las variables i, j, k, l que contienen el nombre, apellidos y telefono respectivamente, yo comprobaría que quiere modificar y en función de eso compararía si dicho campo coincide con la variable “modificar” y si es asi lo sustituyo por “mod”:

      Suponiendo que la respuesta a la pregunta ¿que quieres modificar “nombre”, “apellido” o “telefono” se almacena en la variable %campo% haría lo siguiente:

      Espero que se entienda la idea, cualquier cosa me dices.

      Saludos

      • 4m1g0 dice:

        Me autocorrijo…

        Las exclamaciones sirven para realizar expansión de variables retardada… realmente no lo conocía, pero paso a explicarlo brevemente. En batch cuando haces un bucle, antes de ejecutar nada se sustituyen las variables por sus respectivos valores, por lo tanto si dentro del bucle hacemos un SET. este no va a afectar puesto que las variables ya están sustituidas (este proceso de sustitución se llama “variable expansion” o expansión de variables)

        Para usar la expansion de variables retardada y evitar este problema hay que poner las variables entre signos de admiración (!) y no porcentajes (%). Además al principio del programa hay que activar esta funcionalidad con el comando: SETLOCAL ENABLEDELAYEDEXPANSION

        Por lo tanto para que el código del comentario anterior funcione habria que ponerlo de la siguiente forma:

        No olvides poner el comando: SETLOCAL ENABLEDELAYEDEXPANSION al inicio del programa.

        Espero que ahora si, sea útil, de esta vez me has enseñado algo nuevo a mi 😉

        Saludos

        • rubens dice:

          Me da error, cuando elijo la opción a cambiar, pongo por ejemplo el antiguo nombre, el nuevo nombre y luego me sale No se esperaba 1-4 en este momento

          • 4m1g0 dice:

            Hola,

            Es posible que sea por las comillas?? A veces al copiar y pegar de aquí se insertan unas comillas diferentes a las habituales. Para asegurarte bórrarlas y escríbelas con el teclado manualmente.

            Saludos

          • rubens dice:

            Si, era por las comillas pero igualmente aunque ya no me da error no me modifica nada, me crea el nuevo txt con el registro igual, por el menu no debería ser, y en %campo% le puse %mod% que es el nuevo campo

          • 4m1g0 dice:

            Hola, en el código que pusiste tu inicialmente pone:
            set /p mod= Escriba el nuevo telefono:

            Por lo tanto %mod% entiendo que es el nuevo valor que queremos asignar, así que no se puede sustituir por %campo%

            %campo% debe ser el valor que nos diga cual de los datos tenemos que modificar, asignandolo en el código que pusiste tu arriba quedaría una cosa así:

          • rubens dice:

            No lo entiendo, ahora lo que me hace es duplicar el mismo registro a Agenda.txt en vez de modificarlo. Perdona si soy pesado jeje

  33. 4m1g0 dice:

    Rubens, te pongo el ejemplo completo que he usado yo para más claridad:

    Agenda.txt contiene lo siguiente:

    Y para probarlo puedes responder a las preguntas con:
    > nombre
    > john
    > Michael

    Saludos

    • rubens dice:

      Vale, ahora si me funciona, no se que me fallaba si lo tenía igual, ahora para rematar necesito ponerle un error en caso de que el DNI no exista. Se lo pongo antes de elegir lo que quiero modificar pero ponga el DNI que ponga me va decir que no existe y finaliza

      • 4m1g0 dice:

        No se para que usas el DNI, yo en mi ejemplo no lo he usado para nada.

        En cualquier caso yo lo que haría sería comprobar en el bucle si la fila actual contiene el DNI que estás buscando (eso es un if) y asignaría una variable.

        Al final del bucle simplemente tienes que comprobar si esa variable está asignada, si no lo está es que ninguna fila contiene dicho DNI.

        Dale una vuelta a ver si lo consigues, te recomiendo poner el comando echo a lo largo del programa mientras lo estás programando, para ver que valores tienen las variables en todo momento, así es más fácil encontrar los errores.

        Si no lo consigues pásame el código y lo vamos viendo juntos.

        Saludos

        • rubens dice:

          Tengo puesto lo del DNI para comprobar si existe o no, introduzco el dni, si existe me salta al menu, y en caso de no existir saltar a un mensaje de que no existe, es lo que intento hacer. Voy a mirar lo que me dices a ver

  34. Gian dice:

    Buenas! Necesito una ayuda para finalizar un ejecutable y ya no se mas que pensar… El mismo extrae todos los .rar dentro de una carpeta y sus subdirectorios gracias al 7z.exe, los elimina una vez extraido y guarda la lista de lo extraido…
    El problema… cuando un rar está en varias partes (part1,part2,part3,etc) el comando extrae y une todo desde la Part1 pero el batch sigue tomando part2, part3 y me pregutna si quiero sobre escribir o omitir, obviamente omito y se elimina cada parte…
    Ahora bien, podrian darme una mano para que directamente omita todos los rar que tengan part2 en adelante y los borre?

    Saludos…

    te dejo parte del codigo..
    ——————————————————————————————
    @echo off
    SETLOCAL EnableDelayedExpansion
    set var1="cualquierdirectorio"
    for /R %%I IN (*.rar) DO (
    %%I | findstr c:/".part"
    IF %errorlevel% EQU 1 && var1==%%~pI (
    echo %%I >> Listado.txt && SET var1=%I% && del /S /Q "%%I"
    )ELSE(
    7z x -o"%%~dpI" "%%I" && echo %%I >> Listado.txt && SET var1=!x!%%I && del /S /Q "%%I")
    )
    )
    pause

    ———————————————————————————————-

  35. rubens dice:

    Hola de nuevo, ahora necesito ayuda con bash. Se me da algo mejor que los bat pero sigo teniendo problemas. Tengo un ejercicio que ya hice en bat de copiar y mover con parametros. Tengo fallo en los if de si existe o no el fichero o directorio.

    if [ -e $1 ]
    then
    echo No existe el fichero
    exit
    elif [ -d $1 ]
    then
    echo No existe el directorio
    fi

    if [ $3 = copiar ]
    then
    cp $1 $2
    exit
    else
    if [ $3 = mover ]
    then
    mv $1 $2
    exit
    else
    if [ ' $3 = "" ' ]
    then
    echo La sintaxis no es correcta
    fi
    fi
    fi

    • 4m1g0 dice:

      Hola Rubens,

      No entiendo del todo el propósito del programa, pero veo algunas cosas mal.

      Por ejemplo: [ -e test ] es VERDADERO si existe el fichero “test” y [ -d test ] verdadero si existe el directorio “test”. Por lo tanto lo que estas haciendo es: Si existe el fichero escribimos: “No existe el fichero”.

      Creo que lo que querías es comprobar si NO existe. Para negar, puedes usar el simbolo de exclamación de esta forma:

      Saludos

  36. Gabriel dice:

    Disculpa necesito acceder a mi memoria con un batch pero sólo puedo desde el CMD me podrías decir si hay alguna fucion o de que manera puedo acceder?

    • 4m1g0 dice:

      Hola,

      Con memoria, ¿te refieres a una memoria USB?

      Puedes acceder a ella usando una ruta del sistema por ejemplo si está en la unidad F: F:\miArchivo.txt

  37. rubens dice:

    Si, ahora funciona, lo que quería hacer era comprobar si existia el directorio o fichero, y lo que estaba haciendo yo era decirle si era verdadero en vez de negación. Muchas gracias
    Perdona por no responder antes, estos días estuve un poco desconectado jeje, te voy a tener que molestar más con los scripts.
    Tengo un script que tiene que recibir N parametros. Si N es menor que 2 el programa finaliza. El programa tiene que comparar los parametros 2 a 2 indicando si son iguales o no. En caso
    de que el numero de parametros recibidos sea impar, el ultimo parametro no tendra con quien compararse. Para este ultimo caso indicaremos por pantalla
    que el parametro no se puede comparar.
    Ejecuto por ejemplo comparar.sh casa perro gato gato rio rio mar cielo sol, y tiene que comparar cada una de las palabras

    Tal como lo tengo ahora mismo me sale siempre número de parametros insuficiente

    #!/bin/bash

    if [ ‘ $2 = “” ‘ ]
    then
    echo Numero de parametros insuficiente
    elif [ ‘ $2 = “” ‘ ]
    then
    echo $1 no tiene pareja
    shift
    shift
    elif [ ‘ $1 = $2 ‘ ]
    then
    echo $1 es igual que $2
    else [ ‘ $1 != $2 ‘ ]
    echo $1 es diferente de $2
    fi

    • 4m1g0 dice:

      Hola de nuevo,

      Perdona la tardanza, yo también he estado liado últimamente.

      Ante de nada un aviso para el resto que estén leyendo este comentario: Esto es BASH, no BATCH, es un lenguaje diferente ampliamente usado en Linux, pero no tiene relación con el tutorial.

      Lo primero que no entiendo es por que usas comillas simples (‘) en los ifs. (Es posible que tengan alguna función que desconozco, si es así agradecería que me lo aclarases)

      El primer if que usas, si te fijas, estás preguntando si $2 están en blanco hacemos algo, en caso contrario (elif), si $2 está en blanco, hacemos otra cosa. Si te fijas esto no tiene sentido.

      Por otro lado, vas a necesitar un bucle para comparar todos los parámetros independientemente de cuantos haya.

      Yo empezaría por comprobar si tienes al menos 2 parámetros (-lt less than). con $# puedes ver el numero de parámetros que te quedan y con shift quitas el primero y desplazas todos una posición:

      Una vez hecho esto ya sabes que tienes al menos 2 parámetros (-ge greater or equal). Ahora iniciamos el bucle mientras el número de parámetros restante siga siendo superior a 2:

      Si te fijas lo último que hago en el bucle es desplazar 2 veces los parámetros, para que en $1 y $2 estén los 2 siguientes parámetros la próxima vez que entremos en el bucle.

      Al final del programa (al salir del bucle) pueden ocurrir dos cosas:

      • Que todavía quede 1 parámetro
      • Que no quede ninguno

      Esto lo puedes comprobar con un if simple que ya te lo dejo a ti 😉

      Espero que te sea de utilidad.

      Saludos

  38. Jorge dice:

    4m1g0,

    esperando te encuentres bien.-
    Necesito ayuda para ocultar una contraseña en un archivo bat.-

    set ruta=”\\servidor\appbech”

    set /p USER= USUARIO:

    Set /p PASS= Contrasena:

    net use F: %ruta% %PASS% /user:dominio\%USER%

  39. dario dice:

    como obtengo la hora hhmmss batch.. supongo que debo obtenerla por cada parte porque luego necesito completar el nombre de un archivo.txt
    saludos

    • 4m1g0 dice:

      Hola Darío,

      Para obtener la fecha en batch puedes usar la variable %date% el problema es que dependiendo del idioma el formato varía.

      En mi caso si hago: echo %date% me devuelve: Wed 03/15/2017

      Si en tu equipo el formato tambien es ese puedes obtener cada parte así:
      Día: %date:~7,2%
      Mes: %date:~4,2%
      Año: %date:~-4%

      Con eso puedes formatearlo como quieras. Por ejemplo: echo %date:~-4%-%date:~4,2%-%date:~7,2%

      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *