Tengo un script que cambia el nombre de los archivos agregando una marca de tiempo como prefijo al nombre de archivo actual. Un archivo con una marca de tiempo se ve así:
20170407_1030.file1.txt
Ejecuto este script en una carpeta después de haber trabajado con algunos archivos. El problema es que una vez que un archivo ya tiene una marca de tiempo antepuesta a su nombre, la próxima vez que ejecute el script, antepone otra marca de tiempo al nombre del archivo. En cambio, si un archivo ya tiene una marca de tiempo en su nombre, quiero reemplazarlo con una marca de tiempo actualizada.
Para lograr esto, estoy tratando de identificar los nombres de archivo que ya contienen una marca de tiempo, y si es así, reemplazarlo con una marca de tiempo actualizada.
Mi script para hacer esto actualmente se ve así:
setlocal enabledelayedexpansion
for /f "delims=|" %%F in ('dir /b %cd%\*.*') do (
set "MDate=%%~tF"
set "Patern=*_*."
set "TimeStamp=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"
ren "%%~nF%%~xF" "!TimeStamp!-%%~nF%%~xF"
)
exit
Editar: lo siento por no proporcionar más detalles. He estado investigando un poco y no puedo encontrar una manera de hacer coincidir las máscaras en la muestra dada. Sé cómo reemplazar patrones predefinidos o cómo combinar máscaras como ren *.png *.jpg
.
Respuestas:
Si la salida se ve bien, elimine el eco en la última línea.
Salida de muestra:
Editar Para verificar simplemente la existencia de un patrón date_time en un archivo
, puede usar este lote que usa solo el nivel de error devuelto por findtr
para ejecutar condicionalmente el éxito
&&
o fallar||
diferentes comandos.Salida de muestra:
fuente