Agregue marca de tiempo a los archivos presentes en archivos .txt

1

Tengo un script por lotes (basado en esta respuesta ):

@echo off
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
 echo %%x>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

La salida del código de lote es

D:\v\a.csv
D:\v\b.txt
D:\v\c.xml

Ahora mi requisito es agregar una marca de tiempo, es decir: %date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%para generar archivos.

Ejemplo: mi archivo de salida es D: \ v \ a.csv pero ahora debería ser

D:\v\a_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.csv
D:\v\b_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
D:\v\c%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.xml
usuario3051956
fuente

Respuestas:

1

Mi requisito es agregar una marca de tiempo

Use el siguiente archivo por lotes.

@echo off
set datetime=%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
  echo %%~dpnx_%datetime%%%~xx>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

Notas:

  • %%~dpnxes el nombre de archivo completo, incluida la unidad y la ruta, pero excluyendo la extensión (ejemplo D:\v\a).
  • _ Es el carácter de subrayado.
  • %datetime% es el valor de la cadena de fecha y hora
  • %%~xxes la extensión del archivo (ejemplo .csv).
  • >> es el operador de redireccionamiento.

  • No completamente probado.

    Está utilizando una función dependiente de la configuración regional para obtener los componentes de fecha (que no coincide con el formato de fecha de mi sistema)

    • Un ejemplo simplificado funciona como se esperaba.

Si desea una solución local independiente para los componentes de fecha y hora, vea mi respuesta Imprima fecha y hora en cmd de Windows para obtener el código requerido.


Otras lecturas

DavidPostill
fuente
¿Puede decirme qué hace esto: %% ~ dpnx_% datetime %%% ~ xx >> en el código anterior.
user3051956
@ user3051956 Respuesta actualizada. Vea también el segundo enlace de lectura adicional ...
DavidPostill
El script anterior se está ejecutando correctamente a mi final, noté una situación en la que el script falla. Supongamos que recibo los mismos archivos (a.txt, a.txt) el mismo día y después de agregarle una marca de tiempo ... los dos archivos se ven como a_08042016_095244.txt a_08042016_095244.txt Estos dos archivos se envían a la herramienta ETL como entradas donde falla al decir que los archivos duplicados salen. ¿Puede decirnos cómo diferenciar estos dos archivos para procesarlos? Saludos, Venu.Ch
user3051956
@ user3051956 Hmm. ¿Cómo se obtienen dos archivos llamados a.txten el mismo directorio en primer lugar? Eso no debería ser posible. Sugeriría usar el tiempo de creación del archivo como marca de tiempo. Vea mi respuesta Obtenga el tiempo de creación del archivo en milisegundos para saber cómo hacerlo.
DavidPostill
¿Hay alguna manera de agregar una cadena de fecha y hora a los archivos de manera diferente? Salida del código. D: \ v \ a_0805201616112099.pdf D: \ v \ b_0805201616112099.txt D: \ v \ c_0805201616112099.xml. Aquí se agregan todos los archivos al mismo tiempo, pero debería ser diferente, ya que debería haber un cambio de milisegundos en los archivos Por favor ayuda aquí.
user3051956