标题: 发现&的时间延迟性
[打印本页]
作者: plp626
时间: 2007-12-23 07:39
标题: 发现&的时间延迟性
找一个多行(>50000行)的文本文件(假设文件名为test.txt),进入test.txt所在路径,然后命令提示符中输入:
echo 当前时间:%time%>t.txt&findstr /n "." test.txt&echo 当前时间:%time% >>t.txt
经过好一阵子,终于显示时间了,这两个时间竟然一样!
为大家方便测试把测试代码也附上:
Quote: |
@echo off&color a
echo echo 1234567890^>test.txt>生成大文本文件.bat
echo for /l %%%%i in (1 1 16) do type test.txt^>^>test.txt>>生成大文本文件.bat
call 生成大文本文件.bat
echo 文本文件test.txt(大约8万多行)已经生成,
echo 按任意键测试findstr /n "." test.txt的执行时间. &pause>nul
echo 当前时间:%time%>t.txt&findstr /n "." test.txt&echo 当前时间:%time% >>t.txt
echo.&type t.txt&pause |
|
下面将
echo 当前时间:%time%>t.txt&findstr /n "." test.txt&echo 当前时间:%time% >>t.txt
分三行逐步实现,大家可以再测试以下,便可理解&对time的时间延迟性:
Quote: |
@echo off&color a
echo echo 1234567890^>test.txt>生成大文本文件.bat
echo for /l %%%%i in (1 1 16) do type test.txt^>^>test.txt>>生成大文本文件.bat
call 生成大文本文件.bat
echo 文本文件test.txt(大约8万多行)已经生成,
echo 按任意键测试findstr /n "." test.txt的执行时间. &pause>nul
echo 当前时间:%time%>t.txt
findstr /n "." test.txt
echo 当前时间:%time% >>t.txt
echo.&type t.txt&pause |
|
产生这一现象的原因???
[
Last edited by plp626 on 2007-12-23 at 08:55 AM ]
作者: jiulong
时间: 2007-12-23 20:42
应该是16行呀 每个字符以+1递增 怎么会成8万多行呢 有点想不明白
作者: lxmxn
时间: 2007-12-23 22:24
变量延迟的原因!
作者: chenall
时间: 2007-12-23 23:31
Quote: |
Originally posted by jiulong at 2007-12-23 08:42 PM:
应该是16行呀 每个字符以+1递增 怎么会成8万多行呢 有点想不明白 |
|
你可以回头试下就知道了.
依次执行如下命令.看看结果,应该可以明白为什么了
Quote: |
1.echo.a>test.txt
2.type test.txt>>test.txt
3.notepad test.txt
看看test.txt有几行了.
然后重复2和3
重复2和3 16次后,看看结果 |
|
回楼主,
DOS命令在执行之前时就已经将%%里面替换掉了(一条一条执行的).
所以.以下命令,
Quote: |
echo.%time%&执行其它命令&echo.%time% |
|
执行结果两个时间是一样的.因为这只算是一条.
以下命令.
Quote: |
echo 当前时间:%time%>t.txt
findstr /n "." test.txt
echo 当前时间:%time% >>t.txt |
|
时间当然就不一样了.
因为执行第二句时,需要许多时间(如果这一句所需的时间很短则看不出效果).
到执行第三句时时间就是执行时间.
论坛里面之前就有介绍过.
通过以下例子或许可以明白
Quote: |
set a=1
echo.执行前:%a%&set/aa+=1 >nul&echo.结果:%a%
echo.现在值:%a% |
|
其中第一句设一个变量A=1
第二句,
显示A的值然后将A的值+1再显示A的值.
由于是同一个语句所以,值是一样的.
echo.执行前:%a%&set/aa+=1 >nul&echo.结果:%a%
执行时是先将%a%替换成1然后再执行的
第三句.再显示A的值
作者: plp626
时间: 2007-12-24 19:28
楼上说的极是,很感谢。
我刚接触批处理,许多东西都是 “知其然,但不知其所以然”,这个论坛很好,学到了许多东西,