我有一個批處理文件來執行數據庫備份,計劃在每天選定的時間運行。但我不想在週末或者在特定的日子說出同樣的話。在我的服務器上,%DATE%返回07/08/2013。所以做%DATE:〜0.3%返回07 /;而不是一天。有沒有一種方法可以返回一天,然後使用if-else,我可以引導程序按照需求流動。僅在工作日/選定日期運行批處理腳本
我的服務器運行Windows Server 2003
我有一個批處理文件來執行數據庫備份,計劃在每天選定的時間運行。但我不想在週末或者在特定的日子說出同樣的話。在我的服務器上,%DATE%返回07/08/2013。所以做%DATE:〜0.3%返回07 /;而不是一天。有沒有一種方法可以返回一天,然後使用if-else,我可以引導程序按照需求流動。僅在工作日/選定日期運行批處理腳本
我的服務器運行Windows Server 2003
舉例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!
我正在學習有關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評論說明文檔是錯誤的。
星期六= 6,而星期天= 7在我的系統上....這與本地依賴有關嗎?還是這些代碼在本質上是通用的! – Premanshu
嗡嗡聲,我的機器也告訴我,今天Wed,是3 ...但是,MSDN指出「當前一週的匹配查詢(1-7)的當前日期。按照慣例,值1(一)是總是在星期天,無論機器上設置的文化或區域設置如何。「在http://msdn.microsoft.com/en-us/library/windows/desktop/aa393244(v=vs.85).aspx ... –
危險......但有效!語言依賴。 –
@LS_dev是的,這取決於當地的設置和(只有?)適用於英語和德語。但是還有其他解決方案在SO和Web上無法訪問註冊表:) – Endoro
@LS_dev:這兩個腳本(你和Endoro的)都爲我運行......非常感謝球員 – Premanshu