批处理程序中有某些结构会减慢执行速度。对这一点产生重大影响的唯一构造是通过 aGOTO
而不是任何类型的FOR
命令组装一个循环。GOTO
如果使用命令重写具有多个 's 的大型程序,FOR
预计会节省大量时间。影响这一点的另一个方面是程序具有的命令/行数,也就是说,与另一个程序获得相同结果但行数更少的程序将运行得更快。用更少的命令实现相同目的的方法是充分利用批处理文件功能。
例如,这段代码:
set /A b=a+8
set /A c=b*2
set /A d=c+e
...运行速度比这个慢:
set /A b=a+8, c=b*2, d=c+e
这段代码:
command-that-return-errorlevel
if %errorlevel% equ 1 goto label-1
if %errorlevel% equ 2 goto label-2
if %errorlevel% equ 3 goto label-3
...运行速度比这个慢:
command-that-return-errorlevel
for %%e in (1 2 3) do if %errorlevel% equ %%e goto label-%%e
...和前一个运行速度比这个慢:
command-that-return-errorlevel
goto label-%errorlevel%
缩短变量名对执行速度的影响很小。
这样,最好的选择是从一开始就使用这些技术编写批处理文件。开发一个读取 Batch 文件并执行先前更改的程序没有简单的方法,即用更少的行替换GOTO
并FOR
“压缩”几行。