@echo off
:loop
cls
set /p=今天是%date:~-3%
setlocal enabledelayedexpansion
for %%a in (一 二 三 四 五 六 天) do (set /a n+=1&set ".!n!=%%a"
if "%date:~-1%"=="%%a" set x=!n!)
set /p var=几天前或几天后(前加-):
set /a "s=(var%%7+x-7)%%7+7"
if "%var:~,1%"=="-" (set "str=前") else set "str=后"
echo %var:-=%天%str%是星期!.%s%!
echo 按任意键返回
pause>nul&goto:loop
这些代码是参考了pusofalse版主的代码写出来的,虽然这道题不能说是很难,但在写代码时,特别是那个计算的公式,让我着实想了半天。还有楼上的各位高手的set "_!n!=%%a"类似于这样的语句,如果不是自己写,很难想的通。不得不说写这次代码让我有所收获。
@ECHO OFF
:MAIN
SET /P D=
SET /A M=1%DATE:~5,2%-100,M+=!(M/3)*12,W=(7%DATE:~8,2%+%D%+2*M+3*(M+1)/5+(Y=%DATE:~,4%-M/13)+Y/4-Y/100+Y/400)%%7+1
ECHO %W%
GOTO MAIN