Batch入门教程(1)

入门,进入门,进入这扇门,进入这样一扇(门框+门板+门铃+门锁),使用脚的指定部位完成动作以进入主函数,kkkkk。

入门概述

入门是一切的起点,这些我们都知道。在入门这一章节中,您将首先接触三个简单的指令:echo、pause、exit。这些指令足够您编写一些能够显示信息(例如显示Hello World!)的程序,但是却远远不够于正常编程。当然,一切都是来源于基础的,所以本章节可以算是比较重要的。

重要的并不在于内容,而是理解。如果您看不懂本章节的某些句子,您可以尝试多读几遍,努力去理解。如果您实在无法理解,欢迎告诉笔者,笔者会一一详细回复的。

Hello World!

Hello World!,这可能是每一个入门者都会编写的第一个程序。它们往往只是一个简单的输出,但是却代表着无数的成功和无法比拟的喜悦。在Batch中,您也可以编写Hello World。

创建Batch文件

创建Batch文件有很多种,但是本质就是更改扩展名。在Windows 10系统中,若要显示扩展名,请在资源管理器中这样选择:

image

如果您使用是Windows 7,请按照如下方法进行(用Windows 10来演示):

image
image

这样,您的文件就会多出了一个扩展名后缀,创建批处理文件就简单了。首先,右键选择“新建”- “新建文本文档”:

image

然后将您的文本文档重命名,将.txt后缀更改为.bat 或者.cmd。这两者只有名称上的区别,相信我。

image

在弹出的对话框选择”确定“。这个对话框的意思是说,避免您误更改了扩展名,又忘记了原先的扩展名,那么就不能再运行以前的程序了。

image

这样,您就得到了一个崭新的Batch文件!我们右键它,选择Open with Code,这样就来到了它的编辑页面:

image

开始编写

接下来我们可以输入我们的代码了:

image

这是一行echo指令,它的参数是后面的一大串信息Hello World!。这是最简单的指令之一,它的作用是将后面的参数直接当作回响打印出来。与其它指令不一样,echo的参数即使有空格也不会被错误识别,因为它的作用实在是太简单了,因此不可能会有多个参数。

image

最后一行是exit指令,即退出。这是一个流程控制性指令,它的作用是对会话进行结束,常常表现为关闭窗口。我们给出定义:

流程控制性,是指对编程处理的流程有控制作用的指令,例如exit为退出,call 为转入,pause为暂停。

为了避免本系列的内容定义过多导致冗杂,笔者在以后的正文中会避免使用新的名词。

我们的Hello World完成了,接下来我们进入对单独指令的深度剖析中。

echo

echo是一个回显指令,它用来打印一些内容,例如,执行。

image

需要注意的是,echo不能输出off或者on(但是可以输出类似于offer,is on 之类的含它们的组合)。

关闭回显

为了避免源码在执行过程中会被输出,我们通常关闭回显。上文中的Hello World程序在没有关闭回显的时候是这样的:

image

这可不是我在打指令,而是整个批处理文件运行的结果。这些就叫做“回显”。

但是当我们在开头加入echo off(没有@),情况就不一样了:

image

我们得到了与先前类似的输出,但是我们却发现echo off本身的执行依然看得到回显,这样我们的@就起到作用了,它隐藏单条指令的回显。

这也就意味着我们在最开头加上@echo off就相当于是把每一行指令前面都加上@。

pause

pause在上面已经作了解释,但是它的原理并没有我们说的那么复杂。在help中对它的解释只有一行,示例一行:

Suspends processing of a batch program and displays the message

Press any key to continue . . .

就是显示按任意键继续... 并暂停执行的一个指令。

exit

exit执行后会退出当前会话,因为没有其它的特殊措施,所以一般表现为窗口被关闭。但是如果一个批处理是被调用的:

image

注:call指令会在以后的进阶中学到,现在您只需要知道它是一个可以调用其它批处理文件的指令,也就是说可以在一个批处理文件中执行另一个批处理而不打开新的窗口。

这样做,一旦调用b.bat就会直接退出(不是退出b.bat而是退出整个程序,即关闭窗口),因此我们得到的还是一个闪框(我们以后就叫“突然闪过的黑色或者其它别的颜色的一个控制台窗口”为闪框吧!)。

但是当我们把b.bat里的exit加入一个参数:/b 233

image

这样我们得到的结果就不一样了。我们居然停留住了整个窗口,并且显示This is B!和按任意键继续...这是为什么呢?

退出当前进程

参数/b指定一个退出的代码,称为exitCode。exit /b [exitCode] 类似于其它语言中函数的return一样,返回一个值(不过 exitCode 只能为数字),并且执行以后进程就结束了。

如果你不清楚其它语言中函数的return也没关系,看看下面这个例子:

image

类似。

如果我们不加上这个参数(/b),那么退出的会是整个程序。但是我们加上,我们退出的就仅仅是当前的程序。如果我们单独执行b.bat,我们得到的是一个闪框,因为它本身被自己的exit给结束了。但是当我们用a.bat去调用b.bat的时候,exit /b 233只会退出当前程序,于是b.bat调用后遇到了exit /b 233,退出了b.bat,继续执行a.bat的call下面的代码,即pause。

上述我们的流程用图来表示是这样的:

image

但是如果我们在b.bat里的exit没有带上/b参数,它退出的将是整个程序:

image

此外,exitCode还有另外的作用。例如上面,我们执行了exit /b 233,则代表我们的exitCode就是233,这样,在a.bat内的%ERRORLEVEL%会被设置为这个exitCode即%ERRORLEVEL% == 233。

至此,入门部分就结束了。接下来我们将学习的是进阶,在后续的进阶文章分享中,您将会学习到更多的流程管理,以及有关逻辑判断等知识,大家敬请期待。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容