Respuestas:
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).
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.
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.