2012-11-27 27 views
2

我在SQL Server代理作業中運行一個dos批處理文件。我在批處理文件中有34個步驟。除了第31步,所有步驟每天都在運行。它僅在週二運行。我可以設置另一個SQL代理作業,但這似乎過度殺傷。我怎樣才能在批處理文件中查詢系統的星期幾,以便僅在星期二運行第31步?我嘗試了下面的代碼,但沒有運氣。根據星期幾運行批處理文件的部分

For /F "tokens=1 delims= " %%A in ('Date /t') do @( 
Set DayName=%%A 
) 

if('%DayName:~0,3%' equ 'Tue') <run step 31> 

當我贊同 '%DAYNAME:〜0.3%,' 這顯示 '星期二'

+0

結果是什麼?你可以通過使用'%DATE:〜0.3%'而不是FOR循環來簡化腳本。 –

+0

@ hall.stephenk ....好主意。我喜歡。 – MikeTWebb

回答

4

您可以使用此:

wmic path win32_localtime get dayofweek 

回到 「2」 是星期二。

+0

如在這裏看到的:http://serverfault.com/questions/94824/finding-day-of-week-in-batch-file-windows-server-2008 – LittleBobbyTables

+0

@Francis ....謝謝。 – MikeTWebb

1

感謝您的反饋意見。我發現了這個問題。這是if語句中的parens。一旦我刪除它,它工作得很好。我也刪除了單引號。

這工作

if %DayName:~0,3% equ Tue 

這也工作:

if '%DATE:~0,3%' equ 'Tue' 

這些不工作

if %DATE:~0,3% equ 'Tue' 
if (%DATE:~0,3% equ Tue) 
+0

它實際上是導致問題的引號。 '如果%DATE:0,3%equ'Tue「echo True'不輸出任何內容,而'if%DATE:0,3%equ Tue echo True'輸出'True'。 –

+0

爲什麼我會得到「201」而不是「Tue」? –

+0

@肯....很酷的交易。謝謝澄清。實際上它們都是。如果(%DATE:〜0.3%等於星期二)回波真實輸出沒有 – MikeTWebb