Scripting en Windows
BATCH
¿Que son los archivos batch?
Los archivos batch, también conocidos popularmente como archivos BAT, son
aplicaciones ejecutables.
Son simplemente pequeños archivo de texto plano, que contienen códigos o
instrucciones escritas en el lenguaje de MSDOS, estos códigos son lo que se conoce
como comandos.
Estos archivos son guardados con la extensión de archivo .bat o .cmd.
Al ejecutarse alguno de ellos (dar dos clics), Windows automáticamente inicia la
consola o interprete de comandos de MSDOS y ejecuta las instrucciones o códigos que
contienen en grupo, de forma secuencial.
La consola de CMD, también conocida como Símbolo del sistema, intérprete de
comandos o consola de MSDOS, durante muchos años fue el medio de comunicación o
intérprete entre la máquina y el usuario.
Uso y empleo de los archivos batch en Windows.
El principal uso de estos archivos en la actualidad, es la de realizar tareas sencillas pero
tediosas y repetitivas.
Los archivos batch son ideales para varias funciones, por ejemplo hacer copias, extraer
y listar información, planificar tareas, ejecutar limpiezas en el sistema, hacer respaldos
de datos e información.
¿Cómo crear un archivo batch en Windows?
Para crear un archivo batch solo es necesario un editor de texto plano, que puede ser
el Notepad++ o hasta el simple Bloc de notas de Windows.
Crear un archivo batch, método paso por paso
Comenzaremos creando un Simple y clásico "Hola Mundo", escribiendo el siguiente
código:
@echo off
echo Hola Mundo
pause
exit
Usando archivos batch podemos crear otros archivos diferentes, para eso podemos
usar algo como lo siguiente:
echo Creando un Archivo de texto > nuevo.txt
echo Esta es la Segunda línea >> nuevo.txt
echo Y esta es la siguiente línea >> nuevo.txt
echo Esto es genial >> nuevo.txt
exit
Utilizar el comando cls para limpiar el contenido de la pantalla.
@echo off
echo Hola, cuando pulses una tecla se borrará el contenido y cambiará por
otro
pause
cls
echo ¿Ves?
exit
Usar un archivo batch para sumar dos valores.
@echo off
set /p a="Introduce un número"
set /p b="Introduce otro número"
set /a suma=%a%+%b%
echo La suma de %a% y %b% es %suma%
pause
exit
La ejecución de un programa batch puede ser interrumpida mediante las teclas CTRL +
C.
Usar archivo batch con variables del entorno.
@echo off
REM Comentario Variables de entorno
echo El nombre del ordenador: %COMPUTERNAME%
echo El nombre el usuario: %USERNAME%
echo El dominio es: %USERDOMAIN%
echo La unidad es %SYSTEMDRIVE%
pause
exit
Usar archivo batch para copiar, mover y eliminar archivos.
@echo off
REM Copiar, mover y eliminar archivos
echo Hola, copiaremos un archivo ya creado
pause
copy copiame.txt copiado.txt
echo Ahora, moveremos el archivo a la carpeta prueba
pause
move copiado.txt c:\prueba\copiado.txt
echo Ahora, eliminamos el archivo original copiame.txt
pause
del copiame.txt
echo terminamos
pause
exit
Usar archivo batch para guardar la máscara de red de nuestro equipo.
@echo off
REM Guardar máscara de red
echo Hola, vamos a buscar nuestras máscaras de red
pause
ipconfig|FINDSTR /C: "Máscara de subred">Mred.txt
echo terminamos
pause
exit
Uso de parámetros en batch. Un parámetro es un dato que se le pasa en la misma
línea de comando. Ejemplo: suma.bat 8 7. donde 8 es el primer parámetro y 7 es el
segundo parámetro.
@echo off
REM Multiplica 3 valores por parámetros
echo Hola, vamos a multiplicar los valores %*
set /a multiplica=%1*%2*%3
echo La multiplicación de %1 , %2 y %3 es %multiplica%
pause
exit
Uso de parámetros en batch. Utilizar el comando SHIFT. Este comando hace que los
parámetros vayan "pasando" uno a uno. Ejemplo: prueba_shift.bat uno dos tres
@echo off
REM Paso de parámetros con SHIFT
echo el primer parámetro es %1.
shift
echo el segundo parámetro es %1.
shift
echo el tercer parámetro es %1.
pause
exit
Sentencias condicionales:
- IF [NOT] cadena1==cadena2 comando
- IF [NOT] EXIST archivo comando
- IF [NOT] ERRORLEVEL número comando
Operadores que podemos utilizar en las comparaciones:
- EQU: igual.
- NEQ: no igual.
- LSS: menor que.
- LEQ: menor que o igual.
- GTR: mayor que.
- GEQ: mayor que o igual.
Usar archivo batch, para indicar si un valor pasado por parámetro es positivo o
negativo.
@echo off
REM Saber si un parámetros es positivo o no
if %1% GEQ 0 (
echo el número introducido es positivo
) else (
echo el número introducido es negativo
)
pause
exit
Usar archivo batch, para indicar si ruta de un archivo es errónea o no.
@echo off
REM Saber si una ruta pasada por parámetros es correcta o no
cd %1
if ERRORLEVEL 1 goto error
echo la ejecución de cd ha sido correcta.
goto fin
:error
echo la ejecución de cd no ha ido bien.
:fin
pause
exit
CHOICE: Esta herramienta permite que los usuarios seleccionen un elemento de
una lista de opciones.
@echo off
CHOICE /C YNC /M "¿Quieres mostrar el primer parametro? Y=Si, N=No,
C=Cancelar."
REM Tenemos que poner de mayor a menor porque el if con
REM errorlevel da verdadero para > o = que el valor
if ERRORLEVEL 3 goto ADIOS
if ERRORLEVEL 2 goto NO
if ERRORLEVEL 1 goto SI
:SI
echo El parametro que has pasado es %1
:NO
echo No te muestro nada.
:ADIOS
echo Hasta la proxima.
Pause
Ejemplo c:\prueba> ej_bat.cmd Hola
Sentencias repetitivas (bucles): Estas sentencias hacen que se repita una serie de
comandos de forma varias veces, hasta que se cumpla una condición.
@echo off
if "%1%" EQU "" goto noparam
if NOT EXIST %1% (
echo El directorio %1 no existe, voy a crearlo
md %1
)
:pedir
set /p fich="Introduce un nombre de fichero a copiara a %1 (0 para
terminar)"
if %fich% EQU 0 goto fin
if EXIST %fich% (
copy %fich% %1%
echo %fich% copiado
) else (
echo %fich% no se ha copiado porque no existe
)
goto pedir
:noparam
echo debes poner un directorio como parametro %0 directorio
:fin
pause
Sentencia repetitiva FOR:
FOR %%variable IN (conjunto) DO comando [parámetros]
Usar archivo batch, para realizar mi primer for.
@echo off
REM Mi primer FOR
REM Recorrerá cinco veces el bucle, de 1 a 1
FOR /L %%i in (1,1,5) do echo HOLA
pause
Usar archivo batch, para realizar for.
@echo off
REM Recorrerá 20 veces el bucle, de 2 en 2
FOR /L %%i in (1,2,20) do echo %%i
pause
Usar archivo batch, para realizar for /F.
@echo off
REM Recorrerá 20 veces el bucle, de 2 en 2
FOR /F "tokens=2,3 delims=," %%i in (archivo.txt) do (
echo apellidos: %%i telefono:%%j)
pause
archivo.txt
Juan, Garcia Suarez, 928675445
Antonio, Jimenex Perez, 928008732
Maria, Lopez Marrero, 928012345
Usar archivo batch, para realizar for /R.
@echo off
REM Mostrará los ficheros de texto de una carpeta
FOR /R C:\prueba\ %%g IN (*.txt) do echo %%g
pause
Usar archivo batch, para realizar for /D.
@echo off
REM Mostrará la carpeta admin
CD /D C:\Users
FOR /D %%g in (adm*) DO echo Encontrado
pause
Usar archivo batch, para realizar un contador dentro de un for
@echo off
setlocal EnableDelayedExpansion
set contador=1
REM Recorrerá 5 veces el bucle, de 1 en 1
FOR /L %%i in (1,1,5) do (
Echo numero: !contador!
set/a contador+=1
)
pause
POWER SHELL ISE
Para crear scripts en Power Shell hay que usar la herramienta PowerShell ISE, que ya
viene en nuestro Windows. Tiene el siguiente aspecto o similar:
Los scripts en PowerShell tienen extensión .ps1
Para crear un script que muestre por pantalla “Hola Mundo” haremos lo siguiente:
Guardamos el archivo en una determinada ubicación con un determinado nombre. Por
ejemplo: holamundo.ps1
Para ejecutarlo, abrimos el PowerShell y escribimos:
./holamundo.ps1
Vamos a ejecutarlo a ver qué pasa:
Nos da un error porque la ejecución de scripts está deshabilitada en el sistema.
Para poder habilitar la ejecución de ese script en concreto, escribimos lo siguiente:
Si queremos que se ejecuta cualquier script de PowerShell:
Nos saldrá una advertencia a la que responderemos que sí. Nota: para que funcione
debemos haber ejecutado el PowerShell como administrador.
Algunas páginas web con ejemplos de scripts en PowerShell:
http://somebooks.es/scripts-powershell-guia-principiantes/
https://pandazul.com/aprender-powershell-creando-scripts/
https://cyberseguridad.net/index.php/490-cybertruco-gestion-basica-de-ficheros-y-
directorios-en-powershell
https://www.solvetic.com/tutoriales/article/5730-como-crear-borrar-cuenta-usuario-
windows-10-en-powershell/