2013-08-07 70 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 ... –

相關問題