在上期分享的内容中,我们已经掌握了基础理论知识,今天我们将继续了解和学习与Windows Batch有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,从而能够更加顺利地投入到今后的开发和探究中。

上期内容回顾>>Batch入门教程丨部署与Hello World(上)

入门

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

入门概述

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

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

Hello World!

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

创建Batch文件

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

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

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

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

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

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

开始编写

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

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

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

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

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

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

echo

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

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

关闭回显

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

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

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

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

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

pause

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

Suspends processing of a batch program and displays the message

Press any key to continue . . .

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

exit

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

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

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

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

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

退出当前进程

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

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

类似。

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

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

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

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

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

Batch入门教程丨第一章:部署与Hello World!(下)的更多相关文章

  1. Batch入门教程丨第一章:部署与Hello World!(上)

    Batch入门教程 在本教程中,您将了解并学习与Windows Batch有关的知识和编程方法,用以解决在日常生活中所遇到的简单问题,或者利用Windows Batch建立一个最初级的编程思维方式. ...

  2. Batch入门教程丨第二章:认识变量相关概念

    在前两期的学习内容中,我们已经了解了Batch入门教程有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,今天我们将继续深入学习Batch入门教程之认识变量相关概 ...

  3. 脚本语言丨Batch入门教程第四章:调用与传参

    今天是Batch入门教程的最后一章内容:调用与传参.相信通过前面的学习,大家已经掌握了Windows Batch有关的基础知识和编程方法,以及利用Windows Batch建立初级的编程思维方式.今后 ...

  4. 脚本语言丨Batch入门教程第三章:逻辑判断

    通过学习Batch入门教程的前两章内容,我们已经大致掌握了基本概念和认识变量的相关内容,今天我们要跟大家继续分享第三章内容:Batch入门教程之逻辑判断.  前期回顾  ◀Batch入门教程丨部署与H ...

  5. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  6. ActiveMQ 快速入门教程系列 第一章 点对点消息实现

    ActiveMQ 开发包下载及运行环境搭建 主页:http://activemq.apache.org/目前最新版本:5.11.1开发包及源码下载地址:http://activemq.apache.o ...

  7. Node入门教程(2)第一章:NodeJS 概述

    Node 概述 什么是 Node Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  8. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  9. 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...

随机推荐

  1. Lesson 2-4(字典)

    2.7 字典 &.字典是许多值的集合,索引可以使用许多不同的数据类型,不只是整数,可以是数.字符串或元组. &.字典的索引被称为“键”,键及其关联的值称为“键-值”对,这种键-值对也称 ...

  2. Django—模板

    索引 一.模板语言 1.1 变量 1.2 标签 1.3 过滤器 1.4 自定义过滤器 1.5 注释 二.模板继承 三.HTML转义 四.CSRF 五.验证码 六.反向解析 模板 作为Web框架,Dja ...

  3. kali linux 网络配置

    /etc/init.d/networking restart service newworking restart ifdown eth0 ifup eth0 ifconfig down eth0 i ...

  4. HTTP协议详解及http1.0与http1.1http2.0的区别

    HTTP协议介绍 http(超文本传输协议)是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.特点: (1)支持客户/服务器模式. HTTP是一个客户端和服务器端请 ...

  5. JAVA -数据类型与表达式---变量与赋值

    变量 程序中所管理的大部分信息,都是用变量表示的.下面讨论如何在程序中声明和使用变量. 变量(variable)代表保存数据的内存单元,变量名是内存单元的符号地址.变量声明要求编译器分配足够大的内存单 ...

  6. linux常用命令及使用技巧(一)

    shell命令格式:command [options][arguments] shell的通配符 *匹配任意一个或多个字符 ?匹配任意单一字符 []匹配任何包含在方括号内的单字符 shell的重定向: ...

  7. 给没有连接因特网的centos使用yum安装其他软件。

    在centos上,使用yum安装软件很方便,比如安装gcc,java等, 但是在没有网络的情况下呢? 我之前就碰到过这么一个问题,在一个没有外网的环境内,我需要安装GCC等工具, 然后有人推荐我先去其 ...

  8. ASP.NET Core快速入门学习笔记(第3章:依赖注入)

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1.依赖注入概念详解 从UML和软件建模来理解 从单元测试来理 ...

  9. Linux计划任务及压缩归档

    计划任务介绍 自动执行,备份数据. crontab    和   at : at:它是一个可以处理仅执行一次就结束的指令 crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直 ...

  10. SQL Server Governer 控制资源的使用

    --- Create a resource pool for production processing  --- and set limits.  USE master;  GO  CREATE R ...