如何在批处理文件中创建依赖于其他变量的变量,如%time%date%?

pas*_*sha 0 cmd batch-file

让我们说如果我必须打印时间和日期三次,我必须写

echo %date% %time%
echo %date% %time%
echo %date% %time%
Run Code Online (Sandbox Code Playgroud)

上面的代码打印了三个不同的时间,如果我将%date %% time%指定给一个变量(为了避免每次都写入它们),那么它打印常数值三次,

set a=%date%_%time%
echo %a%
echo %a%
echo %a%
Run Code Online (Sandbox Code Playgroud)

但是我想创建%a%一次变量,并在它们发生变化时仍然回显实际的日期和时间.

Ste*_*han 5

延迟扩张可能会:

@echo off
setlocal enabledelayedexpansion
set  "a=^!time^!"
echo %a%
timeout 2 >nul
echo %a%
Run Code Online (Sandbox Code Playgroud)

通常call用于第二层解析以避免延迟扩展(如在aschipfl的答案中),但要像任何其他变量一样使用它,延迟扩展是唯一的方法.

如果由于任何原因您必须禁用延迟扩展或希望它直接在命令行上工作,那么call当您不介意键入其他call命令时,该方法是一个不错的选择.