我想运行每日增量备份并将星期几附加到文件名中,因此最终得到:
备份_mon.bak
备份_tue.bak
ETC。
并不真正关心附加的具体内容 - 0 - 6 都可以。
我该怎么办?
答案1
由于您使用它进行备份,因此您可能以管理员权限运行该脚本,在这种情况下您可以使用 wmic。
for /F "tokens=2 skip=2 delims=," %%D in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do @echo %%D
将以数字形式给出星期几(星期一=1)。
答案2
看一眼高级日期和时间数学在批处理文件中。你会发现一个子程序可以将日期转换为儒略历,另一个子程序可以告诉你星期几。
答案3
如果您可以毫无问题地调用外部脚本,则可以使用 VBScript 轻松获取星期几:
VBScript 代码:
wscript.echo WeekdayName(Weekday(Date))
调用它并在文件名中使用它:
for /f "delims=" %%a in ('cscript /nologo dayofweek.vbs') do @set myvar=%%a
set filename=backup_%myvar%.bak
然后稍后您可以在脚本中使用变量%filename%
来访问它。例如,如果我今天运行它,它将创建一个名为的文件backup_Sunday.bak
。确保 VBscript 文件与批处理脚本位于同一目录中。
答案4
试试这个:
@echo off
for /f usebackq^tokens^=2^delims^=^,^ %%i in =;(`
robocopy ^| findstr /v "\/ \\\\ - ::" ^| find ","`);= do set "_Name=%%~i"
观察:1有两个空格:
...delims^=^,^SPACESPACE%%~i..
:: Or use "" ::
for /f "tokens=3delims=, " %%i in ('robocopy^|findstr /e "AM PM"')do set "_Name=%%~i"