在批处理文件中将星期几添加到文件名中

在批处理文件中将星期几添加到文件名中

我想运行每日增量备份并将星期几附加到文件名中,因此最终得到:

备份_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"

观察:2 answer,变量/输出中没有逗号。

相关内容