Cómo modificar la fecha y la hora de un archivo usando CMD o PowerShell.

📅
🕑 6 minutos de lectura

Cambiar las marcas de tiempo de los archivos puede parecer algo insignificante, pero resulta sorprendentemente útil si necesitas que parezca que los archivos han sido modificados o para corregir metadatos erróneos. A veces, Windows simplemente altera las marcas de tiempo o quieres poner una fecha anterior a un documento para que parezca más antiguo (sin juzgar a nadie).Sea cual sea el motivo, saber cómo modificar estas fechas con herramientas integradas como PowerShell o incluso CMD (con algo de ayuda) puede ahorrarte muchos problemas. La verdad es que resulta un poco extraño que Windows mantenga estos atributos bloqueados a menos que conozcas los trucos adecuados. Por eso, esta guía explica los pasos prácticos para conseguir que las marcas de tiempo queden exactamente como quieres. Prepárate para usar la línea de comandos, algunos consejos sobre el procesamiento por lotes y un poco de frustración, porque, claro, Windows tiene que complicarlo más de lo necesario.

Cómo cambiar la fecha y la hora de un archivo mediante CMD o PowerShell.

Si estás cansado de que tus archivos muestren obstinadamente fechas de creación, modificación o acceso incorrectas, hay un par de maneras de configurarlas manualmente. PowerShell es bastante potente de forma nativa, permitiéndote configurar fácilmente las tres marcas de tiempo. CMD, por otro lado, no lo admite de forma nativa, y ahí es donde una pequeña utilidad externa como NirCmd resulta útil. Usar uno u otro método depende de tu nivel de comodidad y de cuántos archivos quieras actualizar. Veamos qué hay que hacer, porque a veces, en algunas configuraciones, estos métodos fallan la primera vez o requieren un reinicio para funcionar, así que no te desanimes si no funciona a la perfección al primer intento.

Comprender los atributos de fecha y hora de los archivos.

Primero, debes entender qué significa cada marca de tiempo. Las claves son:

  • Hora de creación : cuándo se creó el archivo por primera vez. Normalmente, no conviene modificarla a menos que sea estrictamente necesario.
  • Fecha de última modificación : el último momento en que se guardó o modificó el archivo. Suele ser el dato que interesa a quienes desean simular ediciones recientes.
  • Hora de último acceso : cuándo se abrió o visualizó el archivo por última vez. Es menos importante, pero si quieres tener el control total, también puedes configurarlo.

Estos parámetros se almacenan en los metadatos del archivo y se pueden modificar manualmente, pero Windows no es del todo transparente al respecto. PowerShell permite modificarlos directamente mediante comandos, mientras que CMD requiere ayuda externa. Saber cuál se desea configurar es el primer paso; de lo contrario, es como intentar arreglar un reloj sin saber qué pieza se está manipulando.

Cambiar la marca de tiempo de un archivo usando CMD con NirCmd

Esta podría ser la mejor opción si trabajas exclusivamente con la línea de comandos. Dado que Windows no ofrece una forma nativa de cambiar las marcas de tiempo directamente, NirCmd es tu aliado. Es una pequeña utilidad que permite establecer marcas de tiempo de archivo desde la línea de comandos. La he usado un par de veces: en una configuración funcionó después de algunos ajustes, en otra tuve que reiniciar, así que la paciencia es clave.

  • Descarga NirCmd desde su fuente oficial y extráelo en alguna carpeta.
  • Agregue la carpeta que contiene nircmd.exe a la variable de entorno PATH de su sistema, o simplemente especifique la ruta completa al ejecutar los comandos.
  • Abra el Símbolo del sistema como administrador. No hacerlo puede causar problemas de permisos, así que es mejor prevenir.
  • Navegue hasta el directorio de su archivo de destino con cd.
  • Ejecuta un comando como este:
nircmd setfiletime "example.txt" "15-03-2023 10:22:30" "15-03-2023 10:22:30" "15-03-2023 10:22:30"

Esto establece las tres marcas de tiempo a la fecha y hora especificadas. Asegúrese de usar el formato dd-mm-yyyy hh:mm:ss, de lo contrario podría dar problemas.

Si solo desea actualizar a la hora actual en lugar de a una fecha específica, haga lo siguiente:

nircmd setfiletime "example.txt" now now now

Muy útil si quieres simular rápidamente una fecha de edición o apertura reciente.

Modificación por lotes de varios archivos con bucles CMD

Si tienes muchos archivos que corregir, no intentes hacerlo uno por uno. El procesamiento por lotes es donde CMD y NirCmd destacan. Usando un bucle for /r, puedes actualizar todos los archivos de una carpeta, incluso de sus subcarpetas, de una sola vez. Es un método engorroso, pero efectivo.

  • Navegue hasta la carpeta de destino.
  • Ejecuta algo como esto (sustituye la fecha/hora según sea necesario):
for /r %i in (*) do nircmd setfiletime "%i" "15-03-2023 10:23:38" "15-03-2023 10:23:38"

Este comando actualiza las marcas de tiempo de todos los archivos de esa carpeta y de todo lo que se encuentre dentro de ella. Resulta útil para limpiar las marcas de tiempo de forma masiva, especialmente si se trata de docenas o cientos de archivos.

Usar PowerShell para mayor flexibilidad

Si te sientes más cómodo con PowerShell o prefieres una solución más integrada sin herramientas externas, PowerShell es la opción ideal. Es bastante potente una vez que le coges el truco. Puedes cambiar CreationTime, LastWriteTime y LastAccessTime directamente con los cmdlets integrados.

  • Abra PowerShell como administrador, ya que de lo contrario los permisos podrían impedirlo.
  • Define tu fecha objetivo:
$NewDate = Get-Date -Year 2023 -Month 3 -Day 15 -Hour 10 -Minute 22 -Second 30

Esto crea un objeto de fecha que puedes reutilizar.

  • Establezca las marcas de tiempo de su archivo con comandos como:
Set-ItemProperty -Path "example.txt" -Name CreationTime -Value $NewDate Set-ItemProperty -Path "example.txt" -Name LastWriteTime -Value $NewDate

Esto actualiza tanto la fecha de creación como la de última modificación. Es muy sencillo una vez que te acostumbras.

Cómo ajustar la hora del último acceso en PowerShell

En caso de que quieras ser exhaustivo y cambiar también la marca de tiempo de la última apertura, simplemente agrega:

Set-ItemProperty -Path "example.txt" -Name LastAccessTime -Value $NewDate

De esta forma, el archivo parecerá haber sido abierto en la fecha especificada. Esto resulta útil si se desea simular actividad reciente, especialmente para registros de auditoría o para ordenar archivos.

Actualización masiva de varios archivos con PowerShell

La verdadera fortaleza de PowerShell reside en el procesamiento por lotes. Puedes seleccionar varios archivos usando Get-ChildItem y recorrerlos todos:

Get-ChildItem -Path "C:\Path\To\Files\*.txt" | ForEach-Object { Set-ItemProperty -Path $_. FullName -Name CreationTime -Value $NewDate Set-ItemProperty -Path $_. FullName -Name LastWriteTime -Value $NewDate }

Si sus archivos se encuentran en subcarpetas profundas, agregue -Recurse para recopilar todo:

Get-ChildItem -Path "C:\Path\To\Files" -Recurse -Filter "*.txt" | ForEach-Object { Set-ItemProperty -Path $_. FullName -Name CreationTime -Value $NewDate Set-ItemProperty -Path $_. FullName -Name LastWriteTime -Value $NewDate }

PowerShell procesará todos los archivos coincidentes sin problema. Recuerda que, para comandos de varias líneas, debes presionar Shift + EnterEnter después de cada línea y dejar la última línea en blanco.

Preguntas frecuentes

¿Qué son los atributos de marca de tiempo de archivo en Windows?

Te indican cuándo se creó un archivo, cuándo se modificó por última vez y cuándo se accedió a él por última vez; algo así como huellas digitales.

¿Puede la línea de comandos (CMD) cambiar las marcas de tiempo de los archivos sin herramientas?

No, Windows no tiene un comando nativo para eso. Necesitarás NirCmd o algo similar.

¿Es PowerShell mejor que CMD para esta tarea?

Sin duda, PowerShell admite de forma nativa la configuración de esas marcas de tiempo y ofrece más control y opciones por lotes.

¿Qué formato de fecha prefiere NirCmd?

Utilice dd-mm-yyyy hh:mm:ss, de lo contrario, podría fallar o romperse.

¿Puedo hacer esto con varios archivos a la vez?

Sí, tanto PowerShell como CMD (con NirCmd) admiten el procesamiento por lotes, por lo que no es necesario procesar cada archivo manualmente.

¿Necesito permisos de administrador?

Normalmente, sí. Sobre todo si modificas las marcas de tiempo de archivos del sistema o de carpetas protegidas. Es mejor ejecutarlo como administrador para evitar problemas de permisos.