- 帖子
- 1726
- 积分
- 4476
- 技术
- 95
- 捐助
- 0
- 注册时间
- 2008-12-21
|
[原创] 我的批处理学习总结,和BATHOME一起成长
学习批处理将近两年了,写点学习经验总结和大家交流交流。
以前一直想学DOS,因为那时候很多病毒很牛鬼,需要在DOS下杀毒,那时候仅仅懂得DIR、CD、EXIT这些简单的命令。07、08年那会威金和熊猫还猖狂,流氓软件也在满天飞,喜欢而且经常杀毒,无意间接触过好几次别人写的用CMD杀毒,知道它有个好处,就是省事。后来自己改编了一下人家的代码,只有一行,就是:
Del C:\windows\inf\svchost.exe /f/s/q/a
其实就是改了路径名而已,但它竟成了我第一个批处理作品!~:)因此,我学习的第一个批处理命令不是ECHO,而是DEL。
2008年12月份,我决定学习批处理。在百度和迅雷搜索下载了一大堆批处理资料,主要有各种教程和打包的批处理作品。
我的学习基本上都是“学以致用”的,持的是“实用主义”态度。不是系统学习,而是想了解命令都有什么功能,只要哪个能杀毒,我就学哪个。好比孙悟空拜师学艺一般,非长生不老不学。干得最多的就是复制和改编别人的代码,批处理包里面有许多现成的作品可供复制和改编。至于学习,懂点英文和百度搜索基本上不是难题。
Cn-dos好多年前已经接触了,也只是在学习DOS的时候才开始深入。但我最终扎根于Bathome,主要原因是它适合于初学者学习,它有足够的学习资料、有良好的学习氛围、有各路高手流连等等。恰巧那时候无法上网,基本上都是有空就跑网吧下载资料回去看,平时就用手机上Bathome,看帖、发帖、下载等等。可能那时候用手机上Bathome最多的就是我了,呵呵!~
基本上七七八八学了一些基础的命令,没有系统的学习。后来遇到FOR了,想真正了解批处理就无法跳过FOR,所谓“无FOR不批”。下了很大决心学习FOR。还是下载学习资料,回来自己复制、改编、测试。
有过几个流传比较广、也比较经典的教程,忘记是谁的了,因为资料太多了,仅仅记得随风的大名。但那些教程过于简单,不够全面和详细,我只能几部FOR的资料对比着学习,很辛苦。自己边学边做笔记,后来干脆将笔记改成自己编写FOR的教程,于是一边学FOR,一边写FOR教程。
09年春节基本上就呆在家里做这件事情,春节之后FOR学好了,FOR教程也写好了。自我感觉还不错,主要特色就是详细和全面,有代码、有案例、有讲解,许多理论的东西都是我自己的创造。想看的可以到我空间:
http://hi.baidu.com/cjiabing/blog/item/7c709a526451bf090df3e367.html。
后来想进一步完善,而且也基本上重新修订了一遍,花了许多心血,终因时间问题被搁置一边了。因为Bathome有太多的高手,有太多的教程了,我偷师得太多,所以在Bathome只发了一篇《批处理FOR /F 中的Delims和Tokens总结》,也是比较经典的,大家可以去领略下。
http://www.bathome.net/thread-3483-1-3.html
学了FOR之后,我的批处理算是真正入门了,现在我对FOR运用得熟练与那时的用功有很多的关系。学完FOR之后我继续攻克IF和SET。IF还好过去了,SET学得马马虎虎,但它和FOR一样重要,因此,直到现在,我在SET总有点吃亏。
之后的一段时间逐渐接触到CALL和一些特殊符号,开始慢慢攻克其它命令,知识面逐渐拓展。在FINDSTR和DIR上一直纠结到现在,每次使用都要查一遍帮助文件。
零九年做得最多的就是一边写代码,一边学习新知识。哪里来的动力呢?还是实际需要。还是杀毒,但不能满足于改编那句DEL命令了,我需要复杂一点的,功能强大一点的批处理,因此,我得想办法写代码。我还不能熟练运用命令,只能慢慢摸索,不停地编、不停地写、不停地测试、不停地学习。往往为了实现一个功能,我需要写几十个代码,测试上百遍,经常几天几夜没得好觉睡,那时候真的是疯狂!
像《一键结束非系统进程》、《同名文件夹病毒专杀》都是那时候的作品,很粗糙。今年也搞了许多好玩的东西,代码是越搞越复杂、越庞大了,如《QQ校友交友访问工具》、《定时任务工具V2.1(明星语音报时)》、《电脑遥控器远程批处理 OEInboxtoolV6.2》等,基本上都是“不计效率,实现功能”,和高手比我差得远了。
多写代码能够训练编程思路、能够培养思考的习惯、细心的品质、探索的精神。写代码写得多了,你对批处理就有了自己很独特的想法。别人说批处理太简单了,成不了大事,这时,你能拍胸脯说,批处理无所不能。别人说批处理无所不能,可能你又会想,批处理就那几个命令,它还得靠第三方支持。但无论怎样,只要你愿意,你都可以用批处理实现你的梦想,在CMD这个舞台上发挥你的聪明才智。
改编代码是一种学习的好方法,而编写代码则更具有创造性、更能带给人成功的快乐。学了那么多知识和技术,你总要写一些对人类有意义的作品吧,不能总是想着用NET去偷窥MM的电脑。许多人学习批处理都是心术不端的,三句不离本行,总是入侵、木马之类的,搞得批处理和黑客差点划上等号了。
这是很可悲的。学习出发点不好,学的技术越好,死得越快!~
好好学习文本处理技术吧,想想那些字符怎么替换、计数、过滤、截取、提取……因为,当你想用批处理处理任何文件的时候,你会发现,批处理都是在处理信息,具体说就是字符串。你会挖空心思去利用DIR、FINDSTR、用FOR、SET、IF做复杂的构思。你会反复用到“FOR /F”来工作,离开FOR你一事无成。
但现在我们在对待文本编辑的时候,往往会用第三方工具,而不能进一步拓展批处理在文本编辑方面的能力。不管是替换、提取、过滤、统计还是什么,我们都会反复利用到这些技术,因此,Bathome有必要对文本编辑做一个总结,将那些常用的可用的代码汇编成一个范本以供大家使用,免得大家每次都要自己去摸索,去发帖求助。对现成代码的共享和利用有助于提高我们的编程效率。
目前,我正在搞一个智能化的东西,像前几次一样,我又卡在了文本编辑上面,所以,我觉得文本编辑能力对于用批处理编程太重要了。
我现在的水平算是中等吧,一般小问题能够自己解决,大问题可以摸索,不用测试可以判断部分代码能否执行。当然,技术有限,斑竹们的代码有许多我都是云里雾里的。最难堪的就是做论坛的练习题,要么是做不出来,要么就是效率太差。
练习题是Bathome的一大特色,对新手来说是个学习的好机会,对一般水平的人来说是个挑战的机会,而对高手来说则是交流的机会。呵呵,不管技术水平高低,大家一起来做做练习吧!~
和我一起成长,和Bathome、和大家一起成长。
以上是经历和经验,以下给新手的学习建议:
1、开始学习的原动力。大家学习都是出于一定的原因的,有的因为工作、有的因为兴趣好奇、有点因为任务……兴趣是最好的老师,没有兴趣,任何命令都是枯燥无味的,特别是对于没有什么色彩和声音的批处理来说。
2、坚持学习的意志力。缺乏目的是坚持不下来的,两天打渔三天晒网,能捞到啥?虽然批处理命令比起其它语言来说没有那么复杂,但完全学习起来一个星期是不能学完的,完全熟练非几个月一年半载是不可能的。因此,需要点耐心。
3、系统学习安排。主要还是逐个命令突破学习。
1)初步了解。DOS命令大全——这个到处转载有。你只需做两件事情:第一,在CMD里输入“命令/?”查看帮助,如“ECHO/?”;第二,在某盘符下建立文件夹,专门用于学习写BAT。比如,你学ECHO,你查看该帮助文件,然后逐个尝试它里面的每个选项和参数,看他们有什么功能。其它常见的DOS命令如DEL、COPY、REN、ECHO、PAUSE……一个个学,都挺简单的,一般花上一两天就能完全了解了,初学不一定要熟练,够用就行。
2)初步进阶。主要针对几个常用的批处理命令而言,如“DIR”、“FIND”、“FINDSTR”、“IF”、“GOTO”、“SET”等等。有些参数较多,需要慢慢琢磨。
前三个主要用于查看文件,参数较多,经常用到,需要逐渐熟练,特别是“FINDSTR”有点另类,不过新手学个两三成也算初步进阶了。
而后三个才算让你明白什么是批处理,或者说批处理和一般DOS的区别所在。IF不简单,需要花点心思。SET在入门时懂得基本用法则可。至于截取、计算和各种设置方法,需要进一步学习。
3)正式进阶。
这里主要是FOR。半天即可入门,但如需熟练掌握估计要两三天,熟练应用的话没有一个星期是不行的。
其次是SET。其实先学习SET然后FOR可能好点,但SET有些用法非一般想象的,需要多接触才得。入门需一天半天,熟练的话少则三两天,多则数月。
第三是符号应用。既然用到FOR和SET了,符号就躲不开。系统学习哪些符号的运用非常有帮助,一般半天就可以上手。
第四是CALL。这个命令貌似简单,用起来很巧妙的。
第五是变量延迟。这个其实不是很难,掌握了两点就得了,但必须会,否则不算进阶。
4)高级进阶。
在某些人看来,正式进阶已经算是高级进阶了,但实际上,正式进阶的内容还是批处理的基础内容,虽然进阶后基本上算完全入门了,但离高手还是有一段距离的。
高级进阶需要进一步学习前面所有没有接触过的内容,比如其它DOS命令,如“WMIC”、“SC”、“REG”、“SCHTASKS”等等。需要进一步学习SET、FOR等较复杂的命令。需要进一步学习特殊符号的应用和处理。
高级进阶还需要重点学习文本解析或编辑,如截取、过滤、比较、统计、提取、替换……
高级进阶需要学习一些第三方工具的使用。
高级进阶需要学习一些VB、HTM之类的东东。
高级进阶需要学习一些深层次的计算机理论问题。
……
总的看来,最快捷的方式入门的话一两个星期是可以的,而想解决小问题则需要个把月,想熟练应用技术,自己编写东西,成为高手则需要更长的时间锻炼。学习,总要时间的付出,走捷径是可以的,但对每个知识和技术的熟练掌握是无法回避的。特别是思想和经验的东西,只有在时间的经历中才能慢慢积累出来。
4、学习方法推荐。
1)需要两种资料,第一种是各种你能弄到的批处理教程。第二种是打包的批处理作品。前者用于系统学习,后者用于改编学习。
2)读Bathome论坛的教材,做论坛的练习题。不能偷懒。
3)改编大法,或者恶搞大法。将你拿到手的批处理代码进行改编,或删、或加或替换,多改改你就会有疑问,有疑问你就会想办法解决,这样你就进步了。
4)手工输入代码。无法逃避的问题,不要老是复制粘贴,除非你太熟练了。
5)做笔记。既然学习就要做笔记,所谓“好记性不如烂笔记”。
6)勤写代码。学了东西总想用来做点什么事情吧?那就开始做吧,不懂就问,在摸索中进步。其实许多人都是在写自己的东西的时候慢慢学东西的。
7)不耻下问。发帖求助,参与别人的讨论,尝试回答别人的问题。论坛提供了很好的交流学习环境。有挑战才知道自己的技术水平如何,动脑筋了才会知道自己的思路是否正确。提问的时候要尽量谦虚,把问题描述清楚,题目要与某个命令或主题有关,求助内容要提供样本或代码,描述要清楚,这样别人才能知道你想干嘛。
8)测试代码。不要想着代码是正确的,代码需要不停地修改。刚开始你会为了实现功能而写得一塌糊涂,等你技术上层次了,你会为别人简单而巧妙的代码佩服。要有测试的勇气才能学习到别人的长处。
9)抓思路,强调思想。批处理也有其独特的编程思想。因其限制,许多问题需要绕着弯子解决,而熟练运用各种命令是前提。
5、踏实的作风。
刚开始不要好高骛远,追求复杂、庞大、巧妙、怪异……遇到不懂的代码要有吃鲸鱼的耐心,将其一点点分解,然后一点点消化掉。
6、终身学习。
学无止境,不要以为你天下无敌东方不败了,一山还比一山高呢。批处理不简单,需要你花一辈子去学习。
7、谦虚地求教,大胆地试验,合法地使用,热情地助人。
[ 本帖最后由 cjiabing 于 2010-8-29 18:40 编辑 ] |
-
2
评分人数
-
|