Date 从日期批处理文件中分离日、月和年

Date 从日期批处理文件中分离日、月和年,date,for-loop,batch-file,Date,For Loop,Batch File,当我这样做的时候 echo %date% 我得到的输出是 pet 28.06.2013 28 06 2013 其他日期 pon -> monday tor -> tuesday sre -> wedneday cet -> thursday pet -> friday sob -> saturday ned -> sunday 我编写了下面的批处理文件来获取日期、月份和时间。但它不起作用。请帮忙/ FOR /F "tokens=1-3

当我这样做的时候

echo %date%
我得到的输出是

pet 28.06.2013
28
06
2013
其他日期

pon -> monday
tor -> tuesday 
sre -> wedneday 
cet -> thursday 
pet -> friday 
sob -> saturday 
ned -> sunday
我编写了下面的批处理文件来获取日期、月份和时间。但它不起作用。请帮忙/

FOR /F "tokens=1-3 delims=." %%A IN ("%sample%") DO (
    SET day=%%A
    SET month=%%B
    SET year=%%C
)
echo %day%
echo %month%
echo %year%
输出

pet 28
06
2013
我希望输出为

pet 28.06.2013
28
06
2013
使用


请注意结尾前的空格

添加空格作为分隔符

FOR /F "tokens=1-4 delims=. " %%A IN ("%sample%") DO (
    SET day=%%B
    SET month=%%C
    SET year=%%D
)
echo %day%
echo %month%
echo %year%

为了获得可靠的日期戳,这将使用XP Pro和更高版本中的WMIC

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set datestamp=%dt:~0,8%
set timestamp=%dt:~8,6%
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
echo stamp: "%stamp%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"

pause

这将基于您计算机上的本地日期执行。我使用基于本地计算机日期的偏移量,即2013年6月28日(星期五)-您可以按如下所示进行调整):

我的(在
dateparse.bat
中):

输出:

解释(前两个赋值,其余留给您)-请注意,输出的偏移量是基于零的,因此第一个字符是index
0
,第二个字符是index
1
,依此类推:

  • SET DayOfWeek=
    创建一个名为
    DayOfWeek
  • %date%
    在您的系统上显示日期,如
    pet 28.06.2013
  • :~,3
    获取一个子字符串,从3个字符(Fri)中的第一个(索引0)开始
  • SET Day=创建
    Day
    环境变量
    Day
  • :~7,2
    获取一个子字符串,从位置8(索引7)开始,共2个字符(
    28
您的(未经测试-您可能需要调整):

SET DayOfWeek=%Date:%~0,3%
SET Day=%Date:~4,2%
SET Month=%Date:~7,2%
SET Year=%Date:~10,4%
ECHO %Year% %Month% %Day% %DayOfWeek% %Today%