Saltar al contenido

Cambie el nombre de los archivos para agregar la fecha de modificación al nombre del archivo con Windows CMD o simple .TXT

Si hallas algún fallo en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

Solución 1:

En Powershell puedes hacer esto con One-Liner:

Get-ChildItem |Foreach-Object  Rename-Item $_ -NewName ("0-12" -f $_.BaseName,$_.LastWriteTime.ToString('yyyyMMdd'),$_.Extension)  

Explicación:

  • Obtener elemento secundario: Obtiene todos los elementos del directorio. podrías agregar -Recurse para obtener archivos de subdirectorios también
  • Objeto Foreach: Ejecute el siguiente bloque de código con cada archivo
  • ps: El archivo iterado actual como un objeto
  • $_.NombreBase: El nombre del archivo sin extensión
  • $_.HoraÚltimaEscritura: La última hora de escritura como un objeto DateTime
    El método .ToString() te permite formatear como lo necesites
  • $_.Extensión: La extensión del archivo.

Solución 2:

Este es el código que necesita usar para iterar los archivos de texto, obtener la fecha de modificación de cada archivo, copiar cada archivo usando la fecha de modificación como parte del nombre del archivo y eliminar los archivos originales. Estabas muy cerca, pero te faltaban algunas cosas.

Para obtener la fecha de modificación de un archivo podemos usar set "MDate=%%~tF".

Para analizar la fecha proporcionada por set "MDate=%%~tF" deberá especificar qué partes del valor almacenado por %MDate% desea utilizar en la salida. Puedes usar el comando set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!" para convertir la salida de set "MDate=%%~tF" de MM/DD/AAAA hh:mm a AAAAMMDD.

Después de eso, podemos copiar los archivos a archivos nuevos usando el valor de %ParsedDate% en el nombre del archivo.

Debería ver dos copias de los archivos. Si desea eliminar los archivos originales, solo necesita ejecutar el comando for %%F in ("C:test*.txt") do ( del %%F ). Eso te dejará con los archivos de texto renombrados. Para convertir el .txt.new a .txt use el comando ren "C:test*.new" *..

Debido a que estamos en un bucle for, necesitamos cambiar la forma en que abordamos las variables (que, según lo que ha escrito hasta ahora, ya lo sabe). Cambiamos % a ! para nombres de variables dentro de un bucle. Así que si tienes el nombre de la variable example harías referencia a la variable usando !example! dentro del bucle en lugar de %example%.

Para que las variables dentro del ciclo funcionen, también necesitamos agregar el comando setlocal enabledelayedexpansion antes del bucle.

Eso debería cubrir todo. Siéntase libre de votar o marcar la respuesta como correcta si esto resuelve su problema.

El archivo por lotes completo se proporciona a continuación.

setlocal enabledelayedexpansion

for %%F in ("C:test*.txt") do ( 
    set "MDate=%%~tF"
    set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"
    REM To add time
    set "ParsedDate=!MDate:~6,4!!MDate:~3,2!!MDate:~0,2!!MDate:~11,2!!MDate:~14,2!"
    copy %%F %%~dpnF_!ParsedDate!%%~xF.new )

for %%F in ("C:test*.txt") do ( 
    del %%F )

ren "C:test*.new" *.

exit

Reseñas y puntuaciones del artículo

Recuerda que puedes dar recomendación a este ensayo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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