欢迎光临散文网 会员登陆 & 注册

(一)初识batch:cmd?批处理?让我们echo hello world!

2020-04-20 17:47 作者:思思陆思思  | 我要投稿

一、batch的历史

说起微软、Windows大家应该都很熟悉了吧?那么提起cmd、批处理,现在多数年轻人也许只是听说过,像是小时候的记忆x)至于本文的标题batch,up估计很多人直接一脸懵逼。嗯,上个月我也是,这是个啥??


其实查一下“batch”这个单词的意思就知道了,百科里也有对批处理的具体介绍说明。

batch,n.一批,【计算机】批;vt.分批处理

我们这里的batch,指的是计算机的批处理程序。当然batch是一个统称,可以泛指各种批处理形式的程序脚本、语言。通常我们默认为batch是指dos、Windows系统下的批处理程序语言。现在电脑主流操作系统是Windows 10,别着急,batch很可能已经在你的电脑里了。


欸,dos系统是…batch怎么就在电脑里了呐?(装腔作势x)这里就有段dos和batch相爱的故事了x)首先说说dos是什么。如果你用过Windows XP,相信你一定会对开机时黑屏加载代码的画面深有感觉。小时候思思看快乐星球,总想着对着黑屏敲个什么神奇命令就会穿梭进电脑探索宇宙……

这些黑屏代码其实就是dos系统的“影子”。dos系统是命令行形式的磁盘操作系统,有许多分支分类,最有名的便是微软的ms-dos。而batch就是在ms-dos上诞生的。ms-dos从微软第一个系统Windows 1.0(1985)开始在微软pc机里称霸了十多年。随着新一代图形界面系统Windows NT 3.1(1993)问世,ms-dos逐渐退居幕后,但其功能一直得以保留,体现在batch上。

可粗暴理解为微软要给它的系统做个gui(图形化用户界面),一开始是在ms-dos的基础上做,后来慢慢脱离它,win 9x系列是很有过渡代表的一段,但直到xp也还能看到一点点。顺便一说,dos系统并不完全等同于微软出品,感兴趣就自行查阅吧~

至于batch,可理解为它是shell脚本的一种,是微软学unix系统下的shell脚本的成果。shell也有许多种,同时它还是一门编程语言。unix也是感兴趣自行查阅啦~

CP/M dos的一些往事:https://jingyan.baidu.com/article/59a015e3a68209f795886568.html



二、开始之前

对批处理有些印象认识的朋友们估计也对“.bat”这个格式有感觉。这就是batch最为大家所知的文件格式。这么说是因为batch还有另外一个格式“.cmd”。这俩的区别在于,“.bat”是基于以前16位系统的格式,而“.cmd”则是后来新的32位系统的格式。所以,当然,up建议大家用“.cmd”格式。不过一般甚至绝大多数时候,这两个格式都只有名字上的区别,运行起来感觉一模一样。


如同许多编程语言,batch也主要是这两种使用方式:一是交互式直接在cmd上输入命令行运行。二是文件式在记事本或notepad3之类的ide里书写命令行,保存为像batch.cmd的脚本文件,再双击文件或是其它操作来运行。

“cmd”和“ide”在这里的概念是,cmd(command,命令提示符,Windows NT 3.1下诞生)是指通过键盘“windows+r”打开“运行”,输入cmd回车所打开的cmd.exe程序,即命令提示符。ide(Integrated Development Environment,集成开发环境)是指一套能提供在上面进行编程运行操作的开发环境的程序。比如记事本和cmd,我们可以直接在记事本上写代码并保存为文件,通过cmd来运行程序。记事本和cmd组合在一起就已经能被称为ide了。


说了这么多,那batch怎么整活呢?有什么用?它和cmd又有什么关系?嘛,正如名称所言,batch最大的特点就是“批量操作处理”:它可以批量完成繁琐甚至复杂的文件操作,查看修改生成输出各种文本或电脑设备的各种信息……几乎凡是有cmd命令行使用方法的工具软件程序,都能被batch调用。可以说,用Windows不玩玩batch感觉有点可惜了。

接下来,我们就开始上手第一个batch程序。



三、echo hello world!

下面我们分别用交互式和文件式来编写一个batch程序,以输出“hello world!”的结果。

本笔记基于Windows 10系统,不过对于现在一般在用的win系统都基本一样。(除非是NT 3.1之前…

首先是交互式。在键盘按下“windows+r”键打开“运行”窗口,输入cmd,然后按下“enter回车”:

可以看到打开了下面这个窗口。这就是我们的cmd命令提示符了:

啥?打不开cmd?打开了运行不了?要有自主查阅意识啊,思思先贴两个:

点击开始-运行-输入CMD回车打不开命令提示符:https://jingyan.baidu.com/article/acf728fd412d87f8e510a385.html

(另外可以用powershell代替cmd使用,但写法略有不同)Win10系统中打开PowerShell的5种方法:https://jingyan.baidu.com/article/49ad8bcebc047b5834d8fa32.html 啥?打不开powershell?啊这…


接着直接以英文模式输入以下内容:

echo hello world!

同样回车,程序运行结果如下:

如图即为程序运行成功

就是这么简单!我们就已经成功编写并执行了第一个batch程序。


文件式的做法稍复杂一点,但在很多时候我们都会以文件式来编写运行batch程序。

首先,新建记事本输入以下内容:

@echo off

echo hello world!

pause

保存,文件名自己随意,后缀改为.cmd即可。如下图:

思思建议大家用notepad3这个ide来玩batch。

因为无论新建还是修改起来都更方便,也更美观,还兼容其它语言。

右键可直接用notepad3打开(我也传了notepad3的安装包在文末的网盘链接里)

这样对于新建的文件,保存的时候打上名字和后缀就成了:

好了。我们来运行这个cmd文件试试看~

如图即为程序运行成功

虽然与交互式所输出的显示画面有不同,但输出结果都是一样的“hello world!”。至于为啥显示的不一样,俺们下期再说(~ ̄▽ ̄)~



四、batch的优劣特性

经过上面第一个程序的体验,我们可以感受到,batch非常容易上手输出内容,简短好记,多操作几遍甚至都已经背下来了。既然是介绍推荐batch的笔记,还是先来吹一下batch有哪些优点吧。


1、batch的指令非常好理解,贴近平时阅读的自然语言和一些其它的编程语言。比如我们的这个程序。pause单词意为暂停、中止,在batch,还有一些编程语言里,pause都是暂停或者结束停止程序的意思(以后思思会再来具体介绍pause指令)。运行程序之后我们很容易感觉到,echo像是“打字”,输出信息内容的意思。但echo的本意为回声,下期我们就会详细的聊聊echo的那些瓜x

2、batch的ide非常简单,使用门槛低,且cmd可多个同时运行。Windows、cmd、记事本,再不济来个notepad3。

3、batch的实用性很强,专一用途“性价比”很高。虽然其它语言也可像batch这样实现对Windows系统的一些操作功能,但思思感觉batch是最简洁直接的。


接下来当然要说说batch的缺点了,凡事都有两面性,实事求是嘛。

1、batch的语法凌乱很不严谨,编程思维与当今习惯思维有较大差异。如果大家要深入学习batch,哪怕只是涉猎基础,都一定要记住,batch程序是严格按从左到右读完一行之后才运行的,一行可以很长很长!这是个大坑,以后思思会慢慢道来。

2、batch的通用性、广泛性差。batch几乎就是“活”在dos、Windows系统上。

3、batch对运算很不完善,且过时落后。batch没有小数,不支持小数的运算!!当然整数的运算还是可以的。前文提到cmd是很久、很久以前就已经有的了,而且也提到了powershell,这就是微软想要用来取代cmd的新工具。说起来对cmd也很没面子,cmd能做的powershell都能做,cmd不能做的powershell也能做。emmm………要说起曾经是吧x

4、batch可以说没有错误追踪能力,任何问题需自行排错。?这缺点咋比优点还多就…俺下面的后记有相关感想。

还有些俺也不知道算优还是劣的特性…比如batch默认不区分大小写,对大小写不敏感batch编程能力较弱不如主要高级语言(感觉这还是看需求目的吧(弱吗这可是个巨坑水超深超好玩

其它估计还有,思思感觉主要的就是这些啦,大家可以在评论区讨论。

把批处理废掉吧,向PowerShell进军:https://www.pstips.net/break-your-batch-habit-and-move-to-powershell.html



四、后记

有人说batch不算一门编程语言,就是个shell命令脚本。毕竟batch就很有问题缺陷,尤其是现在看来。思思觉得batch还算是编程语言吧,从它在历史上的影响,所蕴含的编程思维,结合编程语言的基本概念定义来看,batch也是有点“不得了”。而且思思个人觉得,因为batch的这些功能上的限制缺陷和一些古灵精怪的毛病,学一点batch甚至能让自己“不要那么飘”,趁机锻炼一下思维,之后再学其它的一些编程语言会感觉爽很多x


就像前言说的,我从接触batch到现在也就大概一个月多,起因是在学ffmpeg的时候遇到了些cmd命令,于是又掉进了一个大大大坑23333……所以这个系列笔记可能更多像是我的学习心得笔记。唉,感觉又像回到了隔壁那本文集的心路了,人生时代就是个圈儿!

批处理之家——批处理新手入门导读:http://bbs.bathome.net/thread-75-1-1.html

batch入门教程:https://www.cnblogs.com/ichunqiu/tag/Batch/

《批处理标准教程》2014.05.25 MHL版:链接: https://pan.baidu.com/s/1yaRbGqK-bi56xLF5Ud4heA 提取码: pefm(仅学习研究使用,勿作营利)



感谢你观看到这里。

(一)初识batch:cmd?批处理?让我们echo hello world!的评论 (共 条)

分享到微博请遵守国家法律