我想写一个非常简单的批处理文件。
如果今天是03/13,我希望我的批处理文件输出:
“我会在03/15给你回电话”
因此需要日期和ADD 2个工作日。所以,如果它是03/15:
“我会在03/19给你回电话”
答案 0 :(得分:2)
:)
这是我的一个实现(约150行代码)。
https://gist.github.com/DavidRuhmann/4666270
做这样的事情来调整周末。
if "%Date:~0,3%"=="Thu" call :DaysAhead 4
if "%Date:~0,3%"=="Fri" call :DaysAhead 4
if "%Date:~0,3%"=="Sat" call :DaysAhead 3
if "%Date:~0,3%"=="Sun" call :DaysAhead 2
if "%Date:~0,3%"=="Mon" call :DaysAhead 2
if "%Date:~0,3%"=="Tue" call :DaysAhead 2
if "%Date:~0,3%"=="Wed" call :DaysAhead 2
答案 1 :(得分:2)
使用JScript计算日期,你就是黄金。
@if (@X)==(@Y) @end /* (batch + jscript hybrid script init)
:: *** Batch script *****
@echo off
setlocal
for /f %%I in ('cscript /nologo /e:jscript "%~f0"') do (
echo I will call you back on %%I
)
goto :EOF
:: *** JScript script *****/
var dow = new Date().getDay();
var days = (dow > 4) ? 9 - dow : (dow == 4 ? 4 : 2);
var d = new Date(new Date().getTime() + (1000 * 60 * 60 * 24) * days);
WScript.echo((d.getMonth() + 1) + '/' + d.getDate());
如果今天是星期四,剧本将在下周一返回。周五至周日,接下来的周二。周一至周三,提前两天。而且您不必担心现场,闰年,跳蛙,月球周期等。
答案 2 :(得分:2)
下面的批处理文件可以执行您想要的操作:
@echo off
rem AddBusinessDays.bat date numOfDays
rem Antonio Perez Ayala
rem Convert the date to Julian Day Number + number of days
for /F "tokens=1-3 delims=/" %%a in ("%1") do (
set /A mm=10%%a %% 100, dd=10%%b %% 100, yy=%%c
)
set /A a=mm-14, jd=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075+2+%2, dow=jd%%7
rem Adjust Julian Day Number to avoid weekends
if %dow% lss 2 set /A jd+=2-dow
rem Convert Julian Day Number back to date
set /A l=jd+68569-2,n=(4*l)/146097,l=l-(146097*n+3)/4,i=(4000*(l+1))/1461001,l=l-(1461*i)/4+31,j=(80*l)/2447,dd=l-(2447*j)/80,l=j/11,mm=j+2-(12*l),yy=100*(n-49)+i+l
rem Assemble the result
if %dd% lss 10 set dd=0%dd%
if %mm% lss 10 set mm=0%mm%
set newDate=%mm%/%dd%/%yy%
echo %newDate%
参考:http://www.hermetic.ch/cal_stud/jdn.htm#comp
例如:
>echo %date%
03/13/2013
>AddBusinessDays.bat %date% 2
03/15/2013
>AddBusinessDays.bat %date% 3
03/18/2013
>AddBusinessDays.bat %date% 4
03/18/2013
>AddBusinessDays.bat %date% 5
03/18/2013
>AddBusinessDays.bat %date% 6
03/19/2013
安东尼奥
PS - 是的,我知道这种方法不适用于世界上所有人。好消息是我没有为他们所有人编写这个解决方案,但正是为了OP,尽管很容易为每台计算机修改它。例如,之前的程序 NOT 在我的计算机中工作,因为我的语言环境是DD / MM / YYYY,但我可以在之前的两行程序中交换dd
和mm
我很确定这个世界上的大多数人也有能力这样做!的; - )强>