【问题标题】:separate day month and year from a date batch file从日期批处理文件中分离出日月和年
【发布时间】:2013-06-28 16:04:07
【问题描述】:

当我这样做时

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

【问题讨论】:

    标签: date for-loop batch-file


    【解决方案1】:

    这将根据您计算机上的本地日期进行。我正在使用基于我的本地计算机日期的偏移量,即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.
    

    输出:

    解释(前两个赋值,剩下的留给你)——注意输出的偏移量是从零开始的,所以第一个字符是索引0,第二个是索引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%
    

    【讨论】:

      【解决方案2】:

      使用

      "tokens=2-4delims=. "
      

      注意"结束前的空格

      【讨论】:

        【解决方案3】:

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

        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%
        

        【讨论】:

          【解决方案4】:

          为了获得可靠的日期戳,这在 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
          

          【讨论】:

            猜你喜欢
            • 2018-07-25
            • 1970-01-01
            • 1970-01-01
            • 2015-10-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-11
            • 1970-01-01
            相关资源
            最近更新 更多