2

当我做

echo %date%

我得到输出

pet 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

我希望输出为

28
06
2013
4

4 回答 4

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.

输出:

dateparse.bat 的输出

解释(前两个赋值,剩下的留给你)——注意输出的偏移量是从零开始的,所以第一个字符是 index 0,第二个是 index 1,依此类推:

  • SET DayOfWeek=创建一个名为的环境变量DayOfWeek
  • %date%在您的系统上显示日期,例如pet 28.06.2013
  • :~,3接受一个子字符串,从 3 个字符的第一个(索引 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%
于 2013-06-29T04:01:07.750 回答
4

利用

"tokens=2-4delims=. "

注意关闭前的空格"

于 2013-06-28T16:06:59.760 回答
2

添加一个空格作为分隔符。

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%
于 2013-06-28T16:07:09.810 回答
0

对于可靠的日期戳,这在 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-06-29T03:04:21.227 回答