这是我在看了别人的代码后写的一个读取当前日期的一个批处理,不过会用是会用了,但对其中的一些地方知其然,不知其所以然,希望大家给我解释一下,谢谢!
1.为什么开头用了setlocal,后面set那里还要用call再次延迟
2.为什么用%%str1%%输出时必须要用call才可以得出正确结果,而用!str1!l则可以不用?
3.如果不用str做中间变量,直接对%%a进行字符截取,可以做到吗?应该怎样做?
@echo off
setlocal EnableDelayedExpansion
for /f "delims= " %%a in ('date /t') do (
set "str=%%a"
call set "str1=%%str:~5,2%%"
call echo %%str1%%
echo !str1!
)
pause
1.为什么开头用了setlocal,后面set那里还要用call再次延迟
2.为什么用%%str1%%输出时必须要用call才可以得出正确结果,而用!str1!l则可以不用?
3.如果不用str做中间变量,直接对%%a进行字符截取,可以做到吗?应该怎样做?
@echo off
setlocal EnableDelayedExpansion
for /f "delims= " %%a in ('date /t') do (
set "str=%%a"
call set "str1=%%str:~5,2%%"
call echo %%str1%%
echo !str1!
)
pause

