我希望有一种以DD / MM / YYYY格式打印明天日期的方法。我目前正在运行以下一组cmds:
@echo off
set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%
:loop
set /a d+=1
if %d% gtr 31 (
set d=1
set /a m+=1
if %m% gtr 12 (
set m=1
set /a y+=1
)
)
xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop
echo The date tomorrow is "%d%/%m%/%y%".
pause
以上工作很好,打印“明天的日期是”2012年8月12日“。但是,我需要我的DAY和MONTH值在小于10时出现前导零。我似乎无法想象如何做到这一点。任何人都可以帮助我吗?
干杯,
EL
答案 0 :(得分:1)
您抓住日/月/年套装的错误信息。 这是正确的集合
set /a d=%date:~7,2%
set /a m=%date:~4,2%
set /a y=%date:~10,4%
答案 1 :(得分:1)
你应该能够通过以下方式轻松找出哪些变量在哪里:
@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
答案 2 :(得分:0)
哎呀。我想通过添加:
来解决我自己的问题IF 1%d% LSS 100 SET d=0%d%
IF 1%m% LSS 100 SET m=0%m%
xcopy之前。所以它现在应该是:
@echo off
set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%
:loop
set /a d+=1
if %d% gtr 31 (
set d=1
set /a m+=1
if %m% gtr 12 (
set m=1
set /a y+=1
)
)
IF 1%d% LSS 100 SET d=0%d%
IF 1%m% LSS 100 SET m=0%m%
xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop
echo The date tomorrow is "%d%/%m%/%y%".
pause
希望能帮助任何有类似问题的人:)
答案 3 :(得分:0)
我测试了你的代码......它没有用 以下是批处理代码的适当部分,可以满足您的需要。
:getdate
set /a day=%date:~7,2%
IF %day% LSS 10 set day=0%day%
rem echo.The day is - %day%
set /a month=%date:~4,2%
IF %month% LSS 10 set month=0%month%
rem echo.The month is - %month%
set /a year=%date:~10,4%
rem echo.The year is - %year%
REM Setting Month / Days
set jan=31
set feb=28
set mar=31
set apr=30
set may=31
set jun=30
set jul=31
set aug=31
set sep=30
set oct=31
set nov=30
set dec=31
REM If Months are # set Month to Days
IF %month% EQU 1 set mon=%jan%
IF %month% EQU 2 set mon=%feb%
IF %month% EQU 3 set mon=%mar%
IF %month% EQU 4 set mon=%apr%
IF %month% EQU 5 set mon=%may%
IF %month% EQU 6 set mon=%jun%
IF %month% EQU 7 set mon=%jul%
IF %month% EQU 8 set mon=%aug%
IF %month% EQU 9 set mon=%sep%
IF %month% EQU 10 set mon=%oct%
IF %month% EQU 11 set mon=%nov%
IF %month% EQU 12 set mon=%dec%
echo.Today's Date is %month%/%day%/%year%
set /a day+=1
if %day% GTR %mon% set /a month+=1
if %day% GTR %mon% set day=1
IF %day% LSS 10 set day=0%day%
IF %month% GTR 12 set month=1& set /a year+=1
IF %month% LSS 10 set month=0%month%
echo.Tomorrow's Date is %month%/%day%/%year%
这将设置一个月内的日期(闰年除外),并且应该解决您遇到的任何问题,假设您还不知道,但如果一个月只有30天,您当前的代码会将当天设置为31 ,无论是2月还是只有28天。
你必须在这里插入你的其他代码,因为我不确定你的循环在做什么,否则我只是改变了d = day,m = month和y = year(mon是比较中的天数)月)。
祝你好运,HTH