К сожалению, это не неуязвимо для региональных настроек, но это делает то, что Вы хотите.
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set _my_datetime=%date:~10,4%-%date:~4,2%-%date:~7,2%_%hour%%time:~3,2%
Удивительный материал можно найти на Википедия .
Исходя из опыта и чтения Справочника VTL , сделать это невозможно. Если бы у вас было много подобных заданий, возможно, вы могли бы посмотреть на определение своего собственного велосимакро, чтобы попытаться избежать повторения if else.
Например, если макрос печатает только одну строку, вы можете сделать следующее:
#set ($name = "#condOpt($args.get(0), "default")")
двойные кавычки вокруг вызова макроса важны, поскольку это означает, что правая часть #set анализируется.
В итоге я сделал то, что вы сказали, Марк:
#macro(condOp $check, $default)
#if ($check == "")
$default
#else
$check
#end
#end
И тогда я могу назвать это так:
#set ($name = "#condOp($args.get(0), 'default')")