date - 如何创建每次调用时 *调用* %date% 或 %time% 的用户环境变量?

标签 date time batch-file environment-variables expand

我正在尝试创建 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/

相关文章:

date - 将儒略日期转换为公历日期

具有模式 MM/d/yyyy HH :mm:ss a 的日期的 java LocalDateTime 解析异常

r - 检查日期间隔是否重叠

bash - 使用 GNU parallel 对单个操作进行计时

c++ - localtime 和 asctime 不安全,但安全函数没有相同的参数

c - 这些时钟之间有什么区别, `real-time clock` ,`wall clock` ,`system clock` ?

java - 如何获取Date数据类型中不带时间戳的系统日期?

sql - 使用DDD,如何实现批处理?

matlab - 如何从 MATLAB 执行 dos 命令并立即将控制权返回给 MATLAB(不生成 dos 窗口)

batch-file - MS Dos 批量删除目录中的旧文件