标题: [其他] 批处理重定向到空设备和批处理执行的时间不知道有没有关系 [打印本页]
作者: szl1123 时间: 2014-6-28 11:18 标题: 批处理重定向到空设备和批处理执行的时间不知道有没有关系
关于这个问题我进行了比较
第1个批处理
在每行命令后面不加重定向
第2个批处理
在每行命令的后面加上>nul
第2个批处理
在每行命令的后面加上>>nul
一共测试了两个命令 reg add 和 cacls
第个批处理相同的命令大概有60条,在虚拟机中测试和实机中测试最多也就差了1-2秒,不知道加不加重定向有没有什么关系,
或者如果命令多了的话几百条甚至上千条命令,可能相差的时间可能会比较大,有没有什么方法可以使命令运行的更快。
以下是我测试的时间差。
作者: apang 时间: 2014-6-28 12:22
可以使用括弧将需要重定向的语句包围起来,像这样:- @echo off
- (
- reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
- REG DELETE "HKCU\ttttest" /f
- pause
- )>nul
复制代码
这样可以减少重定向操作次数,效率应该好一点
或者,利用句柄的特性:- @echo off >nul 3>nul
- reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
- REG DELETE "HKCU\ttttest" /f
- pause
复制代码
作者: CrLf 时间: 2014-6-28 15:31
第三种方案,整脚本屏蔽输出:- @echo off
- %1 cmd /c %0 ^>nul
- reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
- REG DELETE "HKCU\ttttest" /f
- pause>con
复制代码
不过需要显示的地方要加 >con
作者: szl1123 时间: 2014-6-28 15:50
回复 3# CrLf
回复 2# apang
这里面的内容是为了测试我写了重复的命令,当然在实际运用时可能命令不是重复的,
谢谢两位的回答,不知道你们测试的时候时间差多不多,我这里测试在虚拟机里面时间差比较明显,实机测试时几乎没有差别。
你们认为他们之间有没有什么关系,不过我现在觉得他们可能没什么关系。
作者: xxpinqz 时间: 2014-6-28 16:04
有关系,测试简单了点。- @echo off
- set st=%time%
- (for /l %%a in (1,1,1000) do echo,%%a)>nul
- echo %st%--%time%
- pause
复制代码
- @echo off
- set st=%time%
- (for /l %%a in (1,1,1000) do echo,%%a)
- echo %st%--%time%
- pause
复制代码
你这样看看
作者: szl1123 时间: 2014-6-28 16:52
回复 5# xxpinqz
这是我的测试结果(实机,我想虚拟机的话应该差别比较大)
有一定的差别
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |