我正在尝试创建 2 个具有以下定义的用户环境变量:
datel=%date:~-4%%date:~3,2%%date:~0,2%
datetime=%date:~-4%%date:~3,2%%date:~0,2%-%time:~0,2%_%time:~3,2%_%time:~6,2%
这样每次我打电话时:
echo %datel%
echo %datetime%
我得到:
20110407
20110407-11_45_45
我可以在 GUI 中毫无问题地定义用户环境变量(计算机->(右键单击)属性->高级系统设置->环境变量),当我在新的 cmd 窗口中执行“设置”时,我得到以下:
>set da
datel=%date:~-4%%date:~3,2%%date:~0,2%
datetime=%date:~-4%%date:~3,2%%date:~0,2%-%time:~0,2%_%time:~3,2%_%time:~6,2%
但是“呼应”它们并不是我所期望的:
C:\Users\jaravj
>echo %datel%
%date:~-4%%date:~3,2%%date:~0,2%
C:\Users\jaravj
>echo %datetime%
%date:~-4%%date:~3,2%%date:~0,2%-%time:~0,2%_%time:~3,2%_%time:~6,2%
提前非常感谢。
最佳答案
使用call echo %datel%
,这会导致另一个解析过程(您在这里需要)。 echo 本身不会扩展任何环境变量,shell 在解析一行时会执行此操作。因此你需要强制这样做。
然而,这并没有记录在案,因此请对此持保留态度。更强大(即实际支持)的选项可能是使用子例程:
:expand
echo.%*
goto :eof
然后用
调用它call :expand echo %datel%
关于date - 如何创建每次调用时 *调用* %date% 或 %time% 的用户环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579213/