2013-12-17 49 views
0

我發現了一些代碼,它取今天的日期並返回第1天的日期(我們稱之爲上個工作日),如果是星期一或星期天或星期六,則返回星期五日期從批處理文件中獲取上一個生意日期

@echo off 
set qty=-1 
:loop4weekends 
set "separator=" 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,now) 
echo>>"%temp%\%~n0.vbs" d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+month(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+day(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   d 
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a 
del "%temp%\%~n0.vbs" 
endlocal& set "YY=%result:~0,4%" & set "MM=%result:~4,2%" & set "DD=%result:~6,2%" & set "daynum=%result:~-1%" 
:: if the daynum is a weekend then loop to get the friday 
set "weekend=" 
echo %daynum% 
if %daynum% EQU 1 set weekend=1&set "qty=-3" 
if %daynum% EQU 7 set weekend=1&set "qty=-2" 
if defined weekend goto :loop4weekends 

set "day=%YY%%separator%%MM%%separator%%DD%" 
echo %%day%% is set to "%day%" (without the quotes) 
pause 

的問題是,現在我需要的第2天,所以我改變的變量qty=-1qty=-2,但它不工作 我該怎麼做才能得到今天-2日期?

回答

1

你必須改變這些線的qty的值:

if %daynum% EQU 1 set weekend=1&set "qty=-3" 
if %daynum% EQU 7 set weekend=1&set "qty=-2" 

這裏-2代碼:

@echo off 
set qty=-2 
:loop4weekends 
set "separator=" 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,now) 
echo>>"%temp%\%~n0.vbs" d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+month(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+day(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   d 
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a 
del "%temp%\%~n0.vbs" 
endlocal& set "YY=%result:~0,4%" & set "MM=%result:~4,2%" & set "DD=%result:~6,2%" & set "daynum=%result:~-1%" 
:: if the daynum is a weekend then loop to get the friday 
set "weekend=" 
echo %daynum% 
if %daynum% EQU 1 set weekend=1&set "qty=-4" 
if %daynum% EQU 7 set weekend=1&set "qty=-3" 
if defined weekend goto :loop4weekends 

set "day=%YY%%separator%%MM%%separator%%DD%" 
echo %%day%% is set to "%day%" (without the quotes) 
pause 
+0

太好了,謝謝:) – user1863359

相關問題