[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理重定向到空设备和批处理执行的时间不知道有没有关系

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

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

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

以下是我测试的时间差。

回复 5# xxpinqz

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

TOP

有关系,测试简单了点。
  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
复制代码
你这样看看
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 3# CrLf


    回复 2# apang

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

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

你们认为他们之间有没有什么关系,不过我现在觉得他们可能没什么关系。

TOP

第三种方案,整脚本屏蔽输出:
  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

TOP

可以使用括弧将需要重定向的语句包围起来,像这样:
  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
复制代码

TOP

返回列表