你應該能夠很容易地找出哪些變量去哪裏由以下:
@echo off
:testing
set /a a=%date:~0,1%
set /a b=%date:~1,1%
set /a c=%date:~2,1%
set /a d=%date:~3,1%
set /a e=%date:~4,1%
set /a f=%date:~5,1%
set /a g=%date:~6,1%
set /a h=date:~7,1%
set /a i=%date:~8,1%
set /a j=%date:~9,1%
set /a k=%date:~10,1%
set /a l=%date:~11,1%
set /a m=%date:~12,1%
set /a n=%date:~13,1%
echo.%a%-a
echo.%b%-b
echo.%c%-c
echo.%d%-d
echo.%e%-e
echo.%f%-f
echo.%g%-g
echo.%h%-h
echo.%i%-i
echo.%j%-j
echo.%k%-k
echo.%l%-l
echo.%m%-m
echo.%n%-n
然後當你得到你想要的第一個值將是
set /a var=%date:~NUM1,NUM2%
其中NUM1是開始NUM2是向右移動了多少個字符,VAR是您要設置的變量。
或者使用FOR語句可能會更好。
我看到有人提到用戶可能來自歐盟或英國。如果是這種情況,他們的日期設置將使用(使用FOR):
@ECHO OFF
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
set day=%dd%
set /a day+=01
SET date=%day%/%mm%/%yyyy%
echo.%date%
pause
我相信你已經騙了你自己。幾個月可以有28,29,30或31天。你的代碼假設所有月份都有31天。一個好的解決方案是將日期轉換爲儒略日期,加1,然後轉換回公曆日期。請參閱[DosTips:date2jdate,:jdate和:jdate2date函數](http://www.dostips.com/DtTipsDateTime.php#Function.date2jdate)。 – dbenham