Script para Comprobar los Hashes de Archivos en una Carpeta y Guardarlos en un Archivo de Texto en Windows

Artículos Guías Manuales Sistemas Linux Windows Binario 0

La verificación de la integridad de archivos es una tarea esencial para asegurar que los archivos no se hayan corrompido o alterado. Si necesitas verificar los hashes de múltiples archivos en una carpeta de manera eficiente, un script puede ayudarte a automatizar el proceso. En este artículo, te proporcionaremos un script de PowerShell que calcula los hashes de todos los archivos en una carpeta y los guarda en un archivo de texto.

1. ¿Qué Hace Este Script?

Este script en PowerShell recorre todos los archivos dentro de una carpeta especificada, calcula el hash de cada archivo usando un algoritmo de tu elección (como MD5, SHA-1 o SHA-256), y guarda el resultado en un archivo de texto. Esto te permite comparar fácilmente los hashes y asegurarte de que los archivos no se han modificado.

2. Requisitos

Para ejecutar este script, necesitarás:

  • Windows PowerShell (incluido en las versiones modernas de Windows).
  • Permisos de lectura sobre los archivos en la carpeta que deseas verificar.

3. El Script en PowerShell

A continuación, te proporcionamos el script completo:

# Ruta de la carpeta que contiene los archivos que deseas verificar
$folderPath = "C:\ruta\a\tu\carpeta"

# Ruta y nombre del archivo de salida donde se guardarán los resultados
$outputFile = "C:\ruta\a\tu\archivo_salida.txt"

# Algoritmo de hash que deseas usar (MD5, SHA1, SHA256)
$algorithm = "SHA256"

# Obtener todos los archivos en la carpeta
$files = Get-ChildItem -Path $folderPath -File

# Iniciar o limpiar el archivo de salida
Clear-Content -Path $outputFile

# Escribir un encabezado en el archivo de salida
Add-Content -Path $outputFile -Value "Verificación de hashes - Algoritmo: $algorithm"
Add-Content -Path $outputFile -Value "Fecha de la verificación: $(Get-Date)"
Add-Content -Path $outputFile -Value ""
Add-Content -Path $outputFile -Value "Archivo, Hash"

# Calcular y escribir el hash de cada archivo
foreach ($file in $files) {
$hash = Get-FileHash -Path $file.FullName -Algorithm $algorithm
$hashValue = $hash.Hash
$line = "$($file.FullName), $hashValue"
Add-Content -Path $outputFile -Value $line
}

Write-Host "Verificación completada. Los resultados se han guardado en: $outputFile"

4. Explicación del Script

  1. Definir la ruta de la carpeta y el archivo de salida:
    • $folderPath es la ruta de la carpeta donde se encuentran los archivos que deseas verificar. Asegúrate de modificarlo con la ubicación correcta de tu carpeta.
    • $outputFile es el archivo de texto donde se guardarán los resultados de la verificación.
  2. Especificar el algoritmo de hash:
    • En la variable $algorithm, puedes elegir entre varios algoritmos de hash como MD5, SHA1 o SHA256. Este script usa SHA256 por defecto.
  3. Obtener los archivos:
    • El comando Get-ChildItem -Path $folderPath -File obtiene todos los archivos en la carpeta especificada.
  4. Calcular el hash de cada archivo:
    • El script utiliza Get-FileHash para calcular el hash de cada archivo y luego lo guarda en el archivo de texto junto con el nombre del archivo.
  5. Guardar los resultados en un archivo de texto:
    • Los resultados se guardan en el archivo especificado en $outputFile. Cada línea del archivo contiene el nombre del archivo seguido de su hash calculado.
  6. Encabezado del archivo de salida:
    • El archivo de texto incluirá un encabezado que especifica el algoritmo utilizado y la fecha de la verificación, lo que facilita la interpretación de los resultados.

5. Ejecutar el Script

  1. Abrir PowerShell:
    • Haz clic derecho en el botón de inicio y selecciona "Windows PowerShell".
  2. Ejecutar el Script:
    • Copia el código del script y pégalo en PowerShell.
    • Asegúrate de que las rutas de la carpeta y del archivo de salida sean correctas.
    • El script calculará los hashes de todos los archivos en la carpeta y guardará los resultados en el archivo de texto especificado.

6. Resultado Esperado

Al finalizar la ejecución del script, tendrás un archivo de texto con el siguiente formato:

Verificación de hashes - Algoritmo: SHA256
Fecha de la verificación: 14/11/2024 10:30:00
Archivo, Hash
C:\ruta\a\tu\carpeta\archivo1.txt, 5e884898da28047151d0e56f8dc6292773603d0d1c7c5c02f2a15ab8a29e1d73
C:\ruta\a\tu\carpeta\archivo2.zip, d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2
...

7. Conclusión

Este script en PowerShell te permite verificar rápida y fácilmente los hashes de todos los archivos en una carpeta y guardar los resultados en un archivo de texto. Es una herramienta útil para mantener la integridad de los archivos y detectar cualquier alteración o corrupción de los mismos.