2013-08-07 112 views
0

我有一个批处理文件来执行数据库备份,计划在每天选定的​​时间运行。但我不想在周末或者在特定的日子说出同样的话。在我的服务器上,%DATE%返回07/08/2013。所以做%DATE:〜0.3%返回07 /;而不是一天。有没有一种方法可以返回一天,然后使用if-else,我可以引导程序按照需求流动。仅在工作日/选定日期运行批处理脚本

我的服务器运行Windows Server 2003

回答

2

举例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! 
+0

危险......但有效!语言依赖。 –

+0

@LS_dev是的,这取决于当地的设置和(只有?)适用于英语和德语。但是还有其他解决方案在SO和Web上无法访问注册表:) – Endoro

+0

@LS_dev:这两个脚本(你和Endoro的)都为我运行......非常感谢球员 – Premanshu

1

我正在学习有关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评论说明文档是错误的。

+0

星期六= 6,而星期天= 7在我的系统上....这与本地依赖有关吗?还是这些代码在本质上是通用的! – Premanshu

+0

嗡嗡声,我的机器也告诉我,今天Wed,是3 ...但是,MSDN指出“当前一周的匹配查询(1-7)的当前日期。按照惯例,值1(一)是总是在星期天,无论机器上设置的文化或区域设置如何。“在http://msdn.microsoft.com/en-us/library/windows/desktop/aa393244(v=vs.85).aspx ... –

相关问题