Board logo

标题: [其他] 批处理重定向到空设备和批处理执行的时间不知道有没有关系 [打印本页]

作者: szl1123    时间: 2014-6-28 11:18     标题: 批处理重定向到空设备和批处理执行的时间不知道有没有关系

关于这个问题我进行了比较

第1个批处理
在每行命令后面不加重定向
第2个批处理
在每行命令的后面加上>nul
第2个批处理
在每行命令的后面加上>>nul

一共测试了两个命令 reg addcacls
第个批处理相同的命令大概有60条,在虚拟机中测试和实机中测试最多也就差了1-2秒,不知道加不加重定向有没有什么关系,
或者如果命令多了的话几百条甚至上千条命令,可能相差的时间可能会比较大,有没有什么方法可以使命令运行的更快。

以下是我测试的时间差。
作者: apang    时间: 2014-6-28 12:22

可以使用括弧将需要重定向的语句包围起来,像这样:
  1. @echo off
  2. (
  3.     reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
  4.     REG DELETE "HKCU\ttttest" /f
  5.     pause
  6. )>nul
复制代码
这样可以减少重定向操作次数,效率应该好一点

或者,利用句柄的特性:
  1. @echo off >nul 3>nul
  2. reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
  3. REG DELETE "HKCU\ttttest" /f
  4. pause
复制代码

作者: CrLf    时间: 2014-6-28 15:31

第三种方案,整脚本屏蔽输出:
  1. @echo off
  2. %1 cmd /c %0 ^>nul
  3. reg add "HKCU\ttttest" /f /ve /t REG_SZ /d "123"
  4. REG DELETE "HKCU\ttttest" /f
  5. pause>con
复制代码
不过需要显示的地方要加 >con
作者: szl1123    时间: 2014-6-28 15:50

回复 3# CrLf


    回复 2# apang

这里面的内容是为了测试我写了重复的命令,当然在实际运用时可能命令不是重复的,

谢谢两位的回答,不知道你们测试的时候时间差多不多,我这里测试在虚拟机里面时间差比较明显,实机测试时几乎没有差别。

你们认为他们之间有没有什么关系,不过我现在觉得他们可能没什么关系。
作者: xxpinqz    时间: 2014-6-28 16:04

有关系,测试简单了点。
  1. @echo off
  2. set st=%time%
  3. (for /l %%a in (1,1,1000) do echo,%%a)>nul
  4. echo %st%--%time%
  5. pause
复制代码
  1. @echo off
  2. set st=%time%
  3. (for /l %%a in (1,1,1000) do echo,%%a)
  4. echo %st%--%time%
  5. pause
复制代码
你这样看看
作者: szl1123    时间: 2014-6-28 16:52

回复 5# xxpinqz

这是我的测试结果(实机,我想虚拟机的话应该差别比较大)
有一定的差别




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2