如何在批量文件脚本中打印当前时间?
我见过网页:
但两者都不好:
对于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
)
)
我无法相信谷歌搜索没有为我解决这个问题!
答案 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%
更改(在需要时)语法,以指示解析器变量扩展需要延迟直到执行。