从日期批处理文件中分隔日期月份和年份

Adr*_*ayo 2 for-loop date batch-file

当我做

echo %date%
Run Code Online (Sandbox Code Playgroud)

我输出为

pet 28.06.2013
Run Code Online (Sandbox Code Playgroud)

其他日期

pon -> monday
tor -> tuesday 
sre -> wedneday 
cet -> thursday 
pet -> friday 
sob -> saturday 
ned -> sunday
Run Code Online (Sandbox Code Playgroud)

我写了下面的批处理文件来获取当天的月份和时间.但它不起作用.请帮忙/

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%
Run Code Online (Sandbox Code Playgroud)

产量

pet 28
06
2013
Run Code Online (Sandbox Code Playgroud)

我希望输出为

28
06
2013
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 7

这将根据您计算机上的本地日期执行此操作.我正在使用基于我当地计算机日期的偏移量,即Fri 06/28/2013- 您可以根据自己的需要进行调整,如下所示):

我的(在dateparse.bat):

@ECHO OFF
@ECHO.
@ECHO Date is %Date%
SET DayOfWeek=%Date:~0,3%
SET Day=%Date:~7,2%
SET Month=%Date:~4,2%
SET Year=%Date:~10,4%
SET Today=%Date:~10,4%-%Date:~4,2%-%Date:~7,2%
@ECHO Year is %Year%, Month is %Month%, Day is %Day%, DayOfWeek is %DayOfWeek% 
@ECHO Today is %Today%
@ECHO.
Run Code Online (Sandbox Code Playgroud)

输出:

dateparse.bat的输出

解释(前两个赋值,其余留给你) - 注意输出的偏移量是零,所以第一个字符是索引 0,第二个是索引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%
Run Code Online (Sandbox Code Playgroud)