批处理中的动态嵌套环境变量

时间:2012-09-25 20:21:22

标签: dynamic batch-file environment-variables

我想在时间和用户名前加上日志,但我无法动态评估%TIME%和%DATE%。我尝试过使用“!”的许多版本,但我从来没有让它工作过。我想要的是

Setlocal EnableDelayedExpansion
set nameDateTime=!%USERNAME% %DATE% %TIME%!
echo %nameDateTime%
echo %nameDateTime%
echo %nameDateTime%
EndLocal

产生3个不同的时间(假设它们相距足够远)。 我尝试了第二个答案:How to create a user Environment variable that *calls* %date% or %time% each time it's invoked?,但是当我调用echo%date1%时,它只打印出date1,而set date1打印出整个!date1 ..!线。

1 个答案:

答案 0 :(得分:4)

由于您已经使用了delayedExpansion:

@echo off
Setlocal DisableDelayedExpansion
set nameDateTime=!USERNAME! !DATE! !TIME!
Setlocal EnableDelayedExpansion
echo %nameDateTime%
echo %nameDateTime%
echo %nameDateTime%
EndLocal

您需要为这些回声留出时间空间,以确定它们实际上会打印不同的值