Agregar el día de la semana al nombre del archivo en el archivo por lotes

4

Quiero ejecutar una copia de seguridad incremental diaria y agregar el día de la semana al nombre del archivo, así que termino con:

backup_mon.bak
backup_tue.bak

etc.

Realmente no me preocupa lo que se agrega exactamente: 0 - 6 está bien.

¿Cómo hago esto?

Roaders
fuente

Respuestas:

3

Como está usando esto para una copia de seguridad, presumiblemente está ejecutando el script con privilegios de administrador, en cuyo caso puede usar wmic.

for /F "tokens=2 skip=2 delims=," %%D in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do @echo %%D

Le dará el día de la semana como un número (lunes = 1).

Foo
fuente
2

Eche un vistazo a las matemáticas avanzadas de fecha y hora en archivos por lotes. Allí encontrará una subrutina que convierte una fecha al calendario juliano y otra que le indicará el día de la semana.

Joey
fuente
0

Si no tiene problemas para llamar a un script externo, puede usar VBScript para obtener el día de la semana con mucha facilidad:

el código VBScript:

wscript.echo WeekdayName(Weekday(Date))

Llamarlo y usarlo en su nombre de archivo:

for /f "delims=" %%a in ('cscript /nologo dayofweek.vbs') do @set myvar=%%a
set filename=backup_%myvar%.bak

luego, en su secuencia de comandos, puede usar la variable %filename%para acceder a ella. Si ejecuté esto hoy, por ejemplo, crearía un archivo llamado backup_Sunday.bak. Asegúrese de que el archivo VBscript esté en el mismo directorio que el script por lotes.

John T
fuente