[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我不是平白无故说这个,而我在大学里半年学期就是在学VB,而同时我在自学Delphi。10多年过去了,我会的语言很多,从C/C++ delphi perl python lua falcon asm ActionScript C#,粗略了解过Java php 和javascript。这一系列语言都给我带来帮助,而VB以及我14年前学的Quick Basic,除了有害没有别的,我都已经忘了Basic语言到底该怎么写了。10年前的RAD快速开发方面比delphi差了不止一个档次,而现在和C#更不是一个档次。扩展性方面,只能用COM扩展还得借助VC或者Delphi。而且瓶颈开发的方式,最终只能调用Win32 API,其实还不如用C语言浅显易懂。尽管现在微软弄了VB.net,给我的感觉,还是一个可笑的玩具。

TOP

我看那些高人教育初学者的时候说,一般情况下,少用临时文件。虽然没有UNIX那种`xxx`或者${xxx}的命令替换,但是有for:
for /f %%i in ('dir /b') do echo copy /y %%i %TEMP%\%%i.bak

高人们又说,写代码尽量不要有明显的bug:
for /f "delims=" %%i in ('dir /b') do echo copy /y "%%i" "%TEMP%\%%i.bak"

高人们还说,不要学会一个for /f就到处乱用:
for %%i in ("*.*") do echo copy /y "%%i" "%TEMP%\%%i.bak"

高人们还说,一般情况下,少用管道。像sed或者awk前面那些grep通常都是多余的。

高人们还说,虽然BAT的正则很弱,但是最基本的四个操作符"." "*" "^" "$"是有的。

高人们还说,重定向符号前面乱加空格会让纯文本也变得不是100%可信。

经常看到高人吹牛13,我也不是很理解,看到一点就记一点。但是没有听说过stderr输出的不会被使用,楼主给讲解一下子呗,我得记到自己的小本本上。

TOP

不同的环境下,每个语言总有自己的擅长之处,最后都是二进制,就看使用的人觉得那个更方便和快速;

编程语言是技术工具,干活前先想好怎么干最关键,其次选工具;

“穷人”没强大工具只好暂时将就着用“锄头”或“铁锹”,不过如果仅仅是栽一颗小树苗,“铁锹和锄头”很合适;

TOP

类Basic语言包括VB并没有任何好的帮助。而且这些语言是有害于思考的,编程人员学习语言,其实是学习符号系统 ...
leeonix 发表于 2011-10-19 22:18



    无论是哪种编程语言,归根到底都只是人类利用的一种工具。至于好与不好,那是因人而异的,不是说你觉得不好它就不好,它不会为你的主观意志所改变。而且每种语言都有自己的优缺点,没有什么是完美的。比如说VB,优点是简单易学易用,效率也不差。C#的确比Batch强大,这个想必大家没有疑问吧?像一个业余的编程爱好者,C#和Batch放在面前,如果说Batch就能满足他平时的需要,他何苦去学习C#呢?明显Batch更加易学易用,这个就是价值所在,再者,VB或者VBS同样有这样的优点,它同样有学习的价值。我怎么看都不觉得它没有任何好的帮助。即使是专业的编程人员,同样学习了许多语言,能有几个人会跟楼主一样说学习VB没任何好的帮助?说句难听点的话,拉不出屎不能怪地球引力不够,那是自己的问题。总之语言是死的,人是活的。
---学无止境---

TOP

VB易用归易用,还没有看到我说的“有害”二字?学习一种有害于以后自己发展的东西,是应该完全摒弃的。

  Visual Basic 是一种给儿童和菜鸟程序员的语言,它自从设计开始就是一种简单的语言。一些 C++ 和 Java 中的特性在 VB 中并没有出现。在感受开发的方便和快速的同时,一些类似于编译时进行类型和声明检查的功能在默认情况下是关闭的。这样一些程序员一边感叹 VB 的易用性,一般沮丧地地看着一些类似于“未定义类型”错误的发生。
  一些批评家认为 VB 的简单特性使得其在未来具有伤害性。很多人自学了 VB,但是并没有学到好的编程习惯。当 VB 进入课堂的时候,学生们不会学到很多基础的程序技术和结构,因为很多技术已经包含在那些对用户可见的组件里面了。不用学习标准的编程习惯,因为 VB 具有可视化的特性,所以导致了一些莫名其妙的代码的产生。而且很多错误和警告的检查默认情况下都是关闭的,程序员很难找到隐藏的错误。有经验的程序员在用 VB 编程的时候都会把这些选项打开。
  一些批评家批评微软简单地拷贝了 BASIC的思想到 VB 中。
  Visual Basic 开发的程序只能运行在 Microsoft Windows 中;VB 程序在运行时还需要 VB 运行库。
  Visual Basic 不能很好的综合Windows 的基础 API,很多时候要使用低级运算的“小伎俩”来进行编程。而 C 语言的低级内存运算比 VB 的要简单得多。

TOP

我看那些高人教育初学者的时候说,一般情况下,少用临时文件。虽然没有UNIX那种`xxx`或者${xxx}的命令替换, ...
awk 发表于 2011-10-19 23:45



我当然知道可以直接用dir /b生成临时字符串放到for里面用。但中间呢?批处理最大的问题就是没有数据结构支持。倘若我需要生成一个list.txt的时候,会通过其他方式再处理一次这个list.txt。然后再用for去做。我只是举个利用纯文本的例子,根据一个简单的备份例子解释生成临时文本的方式而已。
grep给你的功能是过滤。多数的管道操作就是由grep处理然后再交给sed。而不是在awk里面写判断。遵循一件工具做好一件事的原则。grep从unix出现到现在,为什么没有呼吁其他工具替换他,这就是威力所在。
我并没有看到批处理有这四个操作符"."(所有字符) "*"(0个或多个) "^"(行首) "$"(行尾),如果你认为有,那就有吧。批处理有吗?你看到了吗?

TOP

本帖最后由 leeonix 于 2011-10-20 08:42 编辑
不同的环境下,每个语言总有自己的擅长之处,最后都是二进制,就看使用的人觉得那个更方便和快速;

编程 ...
plp626 发表于 2011-10-19 23:55


那是你干的太少。选工具才是首选。因为语言涉及到一个大脑思维的过程,干久了会影响你的思维习惯。
我记得10年前有个形容VB,Delphi,和VC++的有个著名的例子。
三个程序员造桥,VB用手头的工具造了一个颤颤巍巍的桥,Delphi用别人的材料造了个坚固耐用的桥,VC则是自己种树自己炼铁最后造了个桥。

可以说学Delphi的拿过问题来首先想到的是找控件,VC的是找代码然后自己做。
而学VB的拿过问题来,遇到VB干不了的事情,就基本是束手无策了。
这就是影响人的思考方式的可怕之处。

TOP

无论是哪种编程语言,归根到底都只是人类利用的一种工具。至于好与不好,那是因人而异的,不是说 ...
broly 发表于 2011-10-20 01:48


因人而异,是没错。但人在使用工具的时候,也会养成使用工具的习惯。好习惯和坏习惯都会伴随终身。如果已知一个工具可以养成坏习惯,为什么要去养坏习惯?
多年前,谭浩强教授的那本书让很多人养成了写C语言的各种坏习惯,然后现在不知道有多少人在骂谭老头。
而VB从根本就带来了各种各样的坏习惯。而且语言本身带来的概念太多,而且面向对象也是不完全的。多花时间去学一下VC和MFC比学VB要好的多的多。

TOP

我看那些高人教育初学者的时候说,一般情况下,少用临时文件。虽然没有UNIX那种`xxx`或者${xxx}的命令替换, ...
awk 发表于 2011-10-19 23:45


对了,是没有替换命令。但是用Python完全可以做到,只需要一个lambda就可以替换${xxx},然后交给批处理用。

TOP

本帖最后由 leeonix 于 2011-10-20 09:00 编辑

最后我说一下我为什么扔掉VB,然后可以终止这个VB的话题了。
大概是1999年下半年,我还在上大学的时候,在一个个人办软件公司里打零工,老板姓武,我就叫他武老师。当时VB很流行,老师也在用。当时我说,学校里学的都是玩具的东西,我想跟老师深入学学用VB,老师笑呵呵的打开了Delphi4,然后再打开VB6,说,这个东西其实就是拖拖控件然后写一些东西。你看看VB,才那么几个控件,你再看看Delphi,好几排控件比VB多得多,所以干脆你直接学Delphi得了。下午我就去买了本delphi5从入门到精通。就我知道武老师当时的项目已经从VB转向Delphi了。

其实我当时开始学Delphi实际上是被控件多给左右思想了。而今,我一直很庆幸当时没有选择用VB。VB出问题了,你不知道哪里出问题,找错误都费解。而Delphi,市面上的版本都是带源代码的。如果你不懂,可以看看它是怎么工作的,然后你就知道错误在哪了。

TOP

倘若我需要生成一个list.txt的时候,会通过其他方式再处理一次这个list.txt。然后再用for去做。

不是很懂,不知道为什么要拐这么多弯。

grep给你的功能是过滤。多数的管道操作就是由grep处理然后再交给sed。而不是在awk里面写判断。

不错,grep是过滤,但是sed/awk本身可以过滤啊,不用你自己写判断呀。干嘛又是grep又是管道呢?说到呼吁什么东西代替它,别逗了,不在一个层面。

我并没有看到批处理有这四个操作符"."(所有字符) "*"(0个或多个) "^"(行首) "$"(行尾)

如果你认为没有,那就没有吧。我也不知道是不是因为你干的少。

然后现在不知道有多少人在骂谭老头

确实有很多人在骂。我感脚吧,这面不少人是看了几本外文C教材就觉得自己有两把刷子的。而那些低调的高手们给出的评价往往显得谦逊:人家谭老师毕竟让那么多中国人迈进了C门槛。

对了,是没有替换命令。但是用Python完全可以做到

有哪种语言或者脚本做不到吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

>>倘若我需要生成一个list.txt的时候,会通过其他方式再处理一次这个list.txt。然后再用for去做。
>>不是很懂,不知道为什么要拐这么多弯。
我不知道为什么纠结与这个简单的例子,我知识举个生成纯文本使用的例子而已。没别的,有两点优势,
第一,组织自己的结构。
第二,保存一个文件,如果出错就可以看到这个list.txt到底错在哪里,类似一个日志。所以我宁愿生成个文件,也不会写类似for /f in ('dir /b | grep "*\.*"') do这样的。而且后面的删除给别人前都是被注释保留的。

>>grep给你的功能是过滤。多数的管道操作就是由grep处理然后再交给sed。而不是在awk里面写判断。
>>不错,grep是过滤,但是sed/awk本身可以过滤啊,不用你自己写判断呀。干嘛又是grep又是管道呢?说到呼吁什么东西代替它,别逗了,不在一个层面。

我当然知道类似awk在后面是可以用~=加条件过滤是不是显示前面的条件,sed也是可以的。但经常使用grep的人都习惯使用grep,因为日常的工作,操作grep远远多过sed和awk。结合grep和管道做事,这也是我说的习惯的问题。我用vim写代码,使用各类shell,一天要输入grep至少60次以上,像vim自己就有查找vimgrep,为什么vim自己还加了调用外部grep的接口?无它就是习惯而已。

>>然后现在不知道有多少人在骂谭老头
>>确实有很多人在骂。我感脚吧,这面不少人是看了几本外文C教材就觉得自己有两把刷子的。而那些低调的高手们给出的评价往往显得谦逊:人家谭老师毕竟让那么多中国人迈进了C门槛。
我和你的观点是一样的,而且我不是骂老谭的那群人的一员。在80年代,那么封闭的年代,连县城的书店都不一定买得到道德经的时代,没有互联网的时代,老谭的书让人知道了BASIC和C语言。是一代人的领路人。但后面随着新的书籍的进入,老谭还用他的书和教学,就是在误人子弟,那就真的找挨骂了。像类似高校的,比如邱钟潘的“教授”,还有臭名昭著的清华大学出版社。你可以搜索一下有多少人骂。我只是老谭的反例,阐述一个坏习惯的问题。坏习惯养成了想改都很难改。

>>对了,是没有替换命令。但是用Python完全可以做到
>>有哪种语言或者脚本做不到吗?
当然有,他叫做“批处理”或者叫Batch,批处理本质上就是一种“脚本语言”。还有某些小语言,还有某些叫做语言的。比如XML,HTML。XML也是一种叫做“语言”的东西。

TOP

扔盆凉水:批处理就是命令的合集,是对重复命令的操作解放,所以我的思维明显和各位不同,因为是命令合集,所以拿它和C,B之类放在一起讨论不太合适……
1

评分人数

    • powerbat: 正是我想说的。竟然有人将批处理与“语言” ...技术 + 1

TOP

看了开头,觉得还好,但后面觉得真糊涂了!~
批处理嘛,学了才知道怎么样,不要轻易和其他语言比较,一比他就阳痿了。
不过能用就行,用一个记事本就能解决的问题何必去找一个平台再装一些软件再写?
简单实用高效乃精髓,不要离开这个谈批处理。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

为什么拿这最普通的脚本与那些专业的语音比呢。。。。

TOP

返回列表