标题: [系统相关] 一直想学习下批处理的高级应用,请高手们给予指引!! [打印本页]
作者: kzppp 时间: 2013-3-12 00:29 标题: 一直想学习下批处理的高级应用,请高手们给予指引!!
看到WIN系统复制文件时,弹出的框框,上面有复制文件,复制进度,复制剩余时间,百分比。。同时运行10也不卡,而且CPU消耗很低,为什么批处理运行4个自动复制,修改文件名,随便加点处理,cpu都很高,为什么那么大区别?
还有系统自带的任务管理器,里面很丰富的内容,而且每秒都在变化,天啊,cpu却是那么的平静,我们的批就不能吗?
我曾经在我们的论坛上寻找监控程序的批命令。制作出来的效果简直让我难以忍受,总感觉批处理与系统之间隔着很厚的一层墙,但是网上又都说DOS命令是最底层的,直接接触电脑的语言,我以为减少中间程序的批应该更猛更快,朋友们我到底还缺少什么,我又该在百度上搜索那些关键术语,才能解决我目前的困惑,我很想知道一些能更高效更节省的命令,可怎么查也查不到,目前听说操作注册表速度快,还有什么呢?
我不要操作网络的,我只是用来办公,有时候需要处理U盘上大量的数据,更名,删除,复制,移动,搜索,对比,文本处理,文件时间对比等等,闲暇之余想起上学时学习的C++,于是用起了WIN7的cmd,还真有效率,可惜处理起大量的数据总是把电脑累的够呛,好几次死机重启,让我丢掉很多宝贵数据,一度害怕批,停用一段时间后,我不甘心失败,我还想用它,可电脑不是给力,我只有把批的损耗降低,我想知道批为什么那么耗cPU?10G的游戏运行的也不怎么卡?这是为什么?
朋友,请理解我的意思,我的批命令已经很简洁了,也是简了又简,我现在想学习的是更高级的东西,请给予相关术语,我也可以到百度查或者论坛上查,请一定要看明白我的意思,我急于学习,先谢过了!
高手如云,一定有法子的,我看过有个帖子”[系统相关] 批处理无占用监控系统“(http://bbs.bathome.net/viewthread.php?tid=15980)看不明白,是我们论坛里面的,我很喜欢,激起我的前进,于是我来这里求助
作者: CrLf 时间: 2013-3-12 01:25
“DOS命令是最底层的,直接接触电脑的语言”
那指的是汇编指令
批处理强大的地方在于易学易用、构造简单
1、不需要去背各种 api,绝大多数命令自带帮助信息,简单的功能堆叠就能完成很多事情,学习曲线很低
2、合适的时候用一条正确的命令可以解决其他语言可能需要几十行来实现的功能,节省了编写时间
3、移植性强,兼容性只和宿主有关,与平台无关,
4、拓展性好,能与命令行程序交互,可以轻易地统筹各种带有命令行参数的软件
但是缺点也很明显
1、运行效率低,一部分原因是命令行逐行解释的特性(优劣参半),最大的原因还是 ms 没有为效率优化,这和 bash 比较一下就知道了
2、存在几个 bug,且解析机制有不严谨之处,这还是 ms 的原因
3、功能有局限,比如无法直接调用 api 等,但可以通过第三方解决
4、表面的运行机制虽然非常简单,但是深入进去并不好学,有些时候很难让代码难兼顾各种情况
作者: CrLf 时间: 2013-3-12 01:48
批处理上要说深入,如果单纯只是把批表面上的机制弄懂99%,说实话这确实是个很有趣的事,常会有意外惊喜,但是对实用没太大的帮助。
我觉得主要还是理念上的,不一定非要纯批完成,必要时可以调用第三方或者其他脚本,和其他语言相比,统筹才是批擅长的。记得看到别人这样评价 linux shell:把一件事拆成很多部分分别交给擅长于此的工具来做,这是 shell 的精髓...
说到底就是扬长避短,不强迫某个工具做不擅长的事、同时要让专家能发挥100%功能,不择手段地“化繁为简,提高工作效率”才是我们的最终目的。
举个例子,下面这两个代码都是寻找某一行与 关键词.list 中的内容相匹配的文本,但是前者过于强调批本身的作用,findstr.exe 的功能只被发挥了很少一部分,而后者则是把 findstr.exe 的功能最大化,批只用来补充 findstr.exe 无法完成的部分
- @echo off
- for /f "delims=" %%a in (关键词.list) do (
- for %%b in (*.txt) do (
- findstr /x /c:"%%a" %%b >nul&&echo 在 %%b 中找到 %%a
- )
- )
复制代码
- @echo off
- for /f "tokens=1* delims=:" %%a in ('findstr /m /x /g:关键词.list *.txt') do (
- echo 在 %%a 中找到 %%b
- )
复制代码
作者: kzppp 时间: 2013-3-12 09:13
回复 2# CrLf
了解了,有没有和他一样简单,但是功能强大的,还有关键是运行该命令,不需要安装特别麻烦的软件,公司的电脑不允许安装其他软件,我想c++或许可以,还有BASIC,那都是我上学时学的不知道使用不?我只用来文本操作,文件修改,搜索,替换,移动,关键是搜索处理,因为数据存储在我的U盘,我要对其他操作员的U盘或者存储卡内内容进行以上相关操作,如果同时操作上4个,电脑cpu就狂升,死了几次机,掉了几次数据,幸好我都有备份,其实批已经满足了我的要求,处理的还挺好,就是太占CPU,有没有其他的语言可以满足我的需求,主要是命令简单,好学的?
作者: kzppp 时间: 2013-3-12 10:04
回复 3# CrLf
谢谢你的回答,我会关注第三方工具
作者: Batcher 时间: 2013-3-12 10:26
朋友,请理解我的意思,我的批命令已经很简洁了,也是简了又简
请把你的完整代码和测试数据贴出来,让大家帮你看看是否可以继续优化。
作者: cjiabing 时间: 2013-3-12 10:52
批处理嘛就是简单,还可以扩展,不必费很多力气去学。同样,在应用方面,也是冲着简单来的,搞复杂了反而不好。许多打着“监控”字样的批处理八成都是:loop&goto loop,不占CPU才怪!这叫巧妇难为无米之炊!
批处理学会了基础的东西就能做许多简单的高级应用方面的事情,但是想更高级一些唯有多在批处理之外努力了。
至于学习,就得多读、多想、多练、多写……
不过思考还是第一位,多想下批处理能做什么,不能做什么~
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |