【问题标题】:run a batch script only on weekdays/selected days仅在工作日/选定日期运行批处理脚本
【发布时间】:2013-08-07 06:44:50
【问题描述】:

我有一个批处理文件来进行数据库备份,计划在每天选定的​​时间运行。但我不想在周末运行相同的或在选定的日子说。在我的服务器上,%DATE% 返回 07/08/2013。因此,%DATE:~0,3% 返回 07/ 而不是 day。

有没有办法返回一天,然后使用if-else,我可以引导程序按要求流动。

我的服务器运行 Windows server 2003。

【问题讨论】:

标签: batch-file date-format


【解决方案1】:

weekend 的示例:

@ECHO OFF &SETLOCAL
for /f "tokens=2*" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate^|find "REG_SZ"') do set "ssShortDate=%%b"
reg add "HKCU\Control Panel\International" /f /v sShortDate /d "d" >nul
FOR /f %%a IN ("%date%") DO SET "dow=%%a"
reg add "HKCU\Control Panel\International" /f /v sShortDate /d "%ssShortDate%" >NUL
IF /i "%dow:~0,1%"=="s" ECHO weekend!

【讨论】:

  • 危险...但有效!取决于语言。
  • @LS_dev 是的,这取决于本地设置并且(仅?)适用于英语和德语。但是在 SO 和 Web 上还有其他解决方案,无需访问注册表 :)
  • @LS_dev:两个脚本(你的和 Endoro 的)都为我运行......非常感谢大家
【解决方案2】:

我正在学习 WMI,以下应该可以正常运行:

FOR /F "TOKENS=1,* DELIMS==" %%v IN ('WMIC Path Win32_LocalTime Get /FORMAT:VALUE') DO IF "%%v" == "DayOfWeek" SET DayOfWeek=%%w
IF %DayOfWeek% == 0 REM Do whatever you want for Sunday
...
IF %DayOfWeek% == 6 REM Do whatever you want for Saturday

编辑:已更改,根据Win32_LocalTime class 的评论说明文档错误。

【讨论】:

  • saturday = 6,而 Sunday = 7 在我的系统上......这与本地依赖有关还是这些代码本质上是通用的!
  • 嗯,我的机器也告诉我今天,星期三,是 3... 但是,MSDN 声明“当前星期中与查询匹配的日期 (1–7)。按照惯例,值 1(一)始终是星期日,与机器上设置的文化或区域设置无关。”在msdn.microsoft.com/en-us/library/windows/desktop/… ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多