本人在批处理的过程中有这样一个需求:
等待一段时间,然后再接着做别的事情。在windows中没有类似与linux脚本中sleep n这样的命令,因此我们另觅他法。这里我用如下的方式实现,如果你有别的方法我们可以交流交流。
ping 1.1.1.1 -w 500 -n 1
上面的命令的意思是ping 1.1.1.1的主机,我们知道这个主机在任何地方都是不存在的,那么一定会超时,我们可以设定超时的时长,在这里我设定的500ms,这个可以根据自己的需要的来更改。而ping命令默认的尝试次数是4,如果我们只想让他尝试一次,就用-n 1来限定。
好了,执行我们的脚本,即使你用@还是echo off。当执行这条命令的时候一定会有结果回显,显示出来的内容就是request time out。我们只想让他达到睡眠500ms的效果,不想有什么结果显示,所以得想办法把回显的内容去掉。
这时候重定向就可以达到这个效果。这时候我们的这条命令就变成这样了:
@ping 1.1.1.1 -w 500 -n 1 > wait.log
这样会产生wait.log文件,如果你打开这个文件,里面的内容就是ping 的输出结果。
如果你不想看到这个文件,也可以做到,在批处理的最后加上:
set WAITLOG=”./wait.log”
if EXIST WAITLOG ( del %WAITLOG% )
但是我们还有更为简单的另外一种选择:
@ping 1.1.1.1 -w 500 -n 1 > nul
注意这里并不是让结果重定向写到nul这个文件中去,具体的效果可以先运行这个命令,然后查看当前目录下面有没有nul这个文件。运行结果当然是没有了。”>”这个符号肯定是重定向了,没错,这里nul是系统内定的一个管道,或者看作内置对象。
ok, 这样当批处理执行完后,你也看不到wait.log这个文件,就相当于没有产生一样。
下面是对上面的内容的一点补充。
上面的第一种方法是重定向到指定的文件,我们可以做一个实验:
1. 执行下面的命令,然后查看test.txt这个文件
@ping 1.1.1.1 -n 1 > test.txt
2. 执行下面的命令,然后再次查看test.txt这个文件
@ping 1.0.0.0 -n 1 > test.txt
我们发现当第二次查看test.txt这个文件的时候,里面之前的内容被清除了,只剩下了后一次执行命令的结果。
我们接着再做一个实验:
1. 执行下面的命令,然后查看test.txt这个文件
@ping 1.1.1.1 -n 1 >> test.txt
2. 执行下面的命令,然后再次查看test.txt这个文件
@ping 1.0.0.0 -n 1 >> test.txt
这次我们发现用”>>”重定向可以在之前内容上面累加。
我们得出结论:
“>”和”>>”都可以重定向,前者会清除以前的内容,而后者追加。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.