Board logo

标题: %time:~0,2% %%内的啥意思[已解决] [打印本页]

作者: bjsh     时间: 2007-3-16 10:01    标题: %time:~0,2% %%内的啥意思[已解决]
同题

Last edited by bjsh on 2007-3-16 at 10:47 AM ]

作者: oilio     时间: 2007-3-16 10:10
哦,这个源于时间的格式问题,最后两个字符为毫秒,一般人用不着这样,用几点几分几秒的格式比较多一点,所以这样用就是为了去掉最后三个字符,前面的0表示偏移量是0也就是取第一个字符,从第一个字符开始,-3表示去掉后三个字符。这里的之前的0也可以省略。意思我明白,不知道我有没有说错,但愿不要误人子弟。不知道我说了这么多你有没有明白,论坛有这样的贴子,可以搜索一下,lxmxn兄也写过这样的贴子,还有批处理解释这样的用法。有空一定要好好看看。

Last edited by oilio on 2007-3-15 at 09:11 PM ]

作者: Climbing     时间: 2007-3-16 11:52
从set /?中提取的有关帮助:

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。


示例:

d:\>echo %time%
22:41:02.15

d:\>echo %time:~-3%
.77

d:\>echo %time:~0,-3%
22:41:19

d:\>echo %time:~,-3%
22:41:26

d:\>echo %time:~0,2%
22

d:\>set a=12345678

d:\>echo %a:~-5,-1%
4567

d:\>echo %a:~-5,-2%
456

d:\>echo %a:~-5,-5%
ECHO 处于打开状态。

d:\>echo %a:~-5,-6%
ECHO 处于打开状态。

d:\>echo %a:~-5,-4%
4

作者: bjsh     时间: 2007-3-16 21:54
谢谢ls的二位;

本来也是觉得和set有关系;

看了半天的xp自带的.htm的set帮助都没有提到这个;

原来命令提示符下的帮助和那里面的不一样啊!!

作者: bjsh     时间: 2007-3-16 22:10

d:\>echo %a:~-5,-5%
ECHO 处于打开状态。


但是

c:\>echo %a:~1,1%
8

作者: bjsh     时间: 2007-3-16 22:20
理解了!!

Last edited by bjsh on 2007-3-16 at 10:05 AM ]

作者: oilio     时间: 2007-3-16 22:59
C:\>for /r c:\ %a in (*.flag) do set t=%~ta && echo %t:~5,7%

C:\>set t=2007-03-16 09:28 && echo %t:~5,7%
%t:~5,7%

C:\>for /r c:\ %a in (*.flag) do @set t=%~ta && @echo !t:~5,7!
!t:~5,7!
%呢?少一个,而且之前没有开启变量延迟,用!!不起作用啊。

Last edited by oilio on 2007-3-16 at 10:01 AM ]