批处理 在if语句块中使用set的替换功能失败的解决办法set语句的替换功能如下,可以将时间中的空格换成0 :SET T=%time:~0,2% SET H=%T: =0% echo %H% 但是在if语句中,SET H=%T: =0% 会发生错误,if 1==1 ( SET T=%time:~0,2% SET H=%T: =0% echo %H%)结果会显示“ECHO 处于打开状态。”求高手解决
网友回答
【答案】 set t=%time:~0,2%
需要延迟扩展,就是说这是复合语句中的变量,它之后仍使用之前值,(也就是没赋值)可以在使用if 之前加命令setlocal enabledelayedexpansion
,然后在调用时用一对!! 代一对%%取变量值,见set/?
还可以用另一方法延迟变量扩展:
SET T=%time:~0,2%
call SET H=%%T: =0%%
call echo %%H%%