以秒为单位显示批处理脚本中的当前时间

时间:2014-06-16 11:30:24

标签: batch-file windows-7 cmd

如何在批量文件脚本中打印当前时间?

我见过网页:

  1. windows batch script format date and time
  2. TIME command
  3. 但两者都不好:
    对于1st,使用变量%TIME%,它打印的时间相同 - 时间不变 对于第二个,使用命令TIME,它不会打印秒。

    批处理文件中的代码是:

    @echo OFF
    for /l %%x in (1, 1, 100) do (
        echo "*** Repeat no. %%x ***"
        echo "%TIME%"
    
        REM Executing some commands here which take about 5 seconds
    
        for /l %%i in (1, 1, 20) do (
            echo "-- %%i:"
            echo "%TIME%"
                REM Executing a command here which take about 1 second
        )
    )
    

    我无法相信谷歌搜索没有为我解决这个问题!

1 个答案:

答案 0 :(得分:1)

@echo OFF
    setlocal enableextensions enabledelayedexpansion
    for /l %%x in (1, 1, 100) do (
        echo "*** Repeat no. %%x ***"
        echo "!TIME!"

        REM Executing some commands here which take about 5 seconds

        for /l %%i in (1, 1, 20) do (
            echo "-- %%i:"
            echo "!TIME!"
                REM Executing a command here which take about 1 second
        )
    )

是的,您的问题是延迟扩展

当解析一行或一个块(括号内的代码)时,所有变量读取都被变量中的值替换为开始执行代码。因此,在执行块期间变量值的任何变化都是不可见的,因为所有变量读取都被替换为值。

要解决此问题,您需要启用延迟扩展。这允许您更改在代码中引用变量的方式,从%var%更改(在需要时)语法,以指示解析器变量扩展需要延迟直到执行。