Re lydong:
不错的内容,不过以下几点需要纠正:
1,DIR /A-D | FIND/V “TXT”
文中提到txt前需加空格防止find过滤掉主文件名中含txt的文件;但是忽略了长文件名中以txt开头的文件,所以txt前后都需要加上空格,避免find过分过滤。
2,开关/I的作用是使FIND命令忽略在命令行中键入扩展名的情况
此处应是笔误,开关i开关使FIND命令忽略字符的大小写,以兼容输入的大小写扩展名。
3,第四小节中的例程的两句cd
既然C:\TEXTEDIT以被设定为搜索路径,那cd C:\TEXTEDIT就略显多余了,最后的cd c:\也处理的不理想,因为它没有恢复用户执行前的所在的路径。
4,REM的执行时间和注释的长短无关,而::和GOTO在注释较长时执行时间将加倍
这是个流传比较广泛的错误说法。恰恰相反,系统解释 :: 时,在第二个 : 处就会判定这是一个不合法的批处理标签名,而直接解释下一行语句。解释 goto 时,则只检测每行的的首字符是否 :,若不是直接解释下一行。而解释 rem 时,会扫描整行内容。只要在注释内容中加上文件输出的管道字符,便可以略窥他们的运行机制了。
5,IF %USERINPUT%==ERASE GOTO ERASE
这是个比较明显的失误,==左右的字符串没有添加引号之类必不可少保护字符。
另外,第六小节的实现有个更佳的技巧:
@echo off
set %1=Enable
if == goto swtich1
goto end
:switch1
rem content of switch 1
:end
不过瑕不掩瑜,这仍然不失为一篇好文章。