计算机技术基础 (bat 批处理)Note3

news2024/11/26 7:32:34

计算机技术基础 (bat 批处理)Note3

本节主要讲 Goto ; Find ; TYPE ; START ; CALL 命令

Goto 命令

Goto 命令:指定跳转到标签行,找到标签行后,程序将处理下一行开始的命令。(它本身不执行任何操作,只是作为跳转的目标。)
标签的名字可以随便起(对大小写不敏感),但是最好是有意义的,字母前必须加个冒号 : 来表示这个字母是标签。
**注意这里:**标签只是给代码打一个标签,可以用来标记子程序。加上标签,只要没被跳过,不影响代码执行。**不像编程语言的函数那样,会将这一段代码封装只要不调用就不会运行。**可以仔细看下文 Goto 的第二个例子(结合if的列子)以及 call的示例2,进一步理解。
Goto 命令就是根据这个冒号来寻找下一步跳到那一行命令。
示例:

@echo off  
echo This is the start.  
goto mylabel  
echo This line will never be executed.  
  
:mylabel  
echo This is the label.
pause

在上面的例子中,脚本会打印“This is the start.”,然后跳转到标签mylabel处,打印“This is the label.”。位于goto和标签之间的代码行不会被执行。
结果:

This is the start.
This is the label.
Press any key to continue . . .

Goto 命令 也可以与条件语句结合使用,以实现条件跳转。示例2:

@echo off  
set /p userInput="Enter your name: "  
if "%userInput%"=="John" goto johnLabel  
echo Hello, %userInput%!  
echo print this texts
goto end  

:johnLabel  
echo Hello, John! Special message for you.  
  
:end  
echo Script ends.
pause

如果输入的是 John:

Enter your name: John
Hello, John! Special message for you.
Script ends.
Press any key to continue . . .

此时 if "%userInput%"=="John" 判断为真 运行 goto johnLabel,将直接跳转到 标签为 :johnLabel 的地方 运行 echo Hello, John! Special message for you. 和后面的 :end 标签为 的代码(echo Script ends.pause)。此时 echo Hello, %userInput%!echo print this textsgoto end 将会被跳过。

如果输入的不是 John:

Enter your name: Yang
Hello, Yang!
print this texts
Script ends.
Press any key to continue . . .

此时 if "%userInput%"=="John" 判断为假,将不会运行 goto johnLabel。此刻不会跳转,接着运行 echo Hello, %userInput%!echo print this textsgoto end。运行到 goto end 的时候,发生跳转,跳转到标签为 :end 的地方运行 echo Script ends.pause。此时标签为 :johnLabel 的代码 echo Hello, John! Special message for you. 会被跳过。
所以我理解 goto 的类似于跳转,这个过程跳过一部分代码,但不影响后面的代码执行(加上标签,只要没被跳过,不影响代码执行。不要理解成类似于一些编程语言的函数那样只要不调用就不会运行。)。是否输入 John 最后一句都是 Script ends.,但是不输入 John 得到的 Script ends.,是通过 goto end 跳转的,而输入 John 不会运行 goto end 这一句。我这里加了一句 echo print this texts 更好理解。

Find 命令

Find 命令作用:在文件中搜索字符串。
字符串 (String):是由数字,字母,下划线组成的一串字符。
示例:
比如我们有一个文件 test.txt :

a1b2c3

a1b2c
3

aovndgobofnklndfa1b2c3dvsbsvdsf

我们写一个 bat 文件

@echo off  
find "a1b2c3" test.txt
pause
find "a" test.txt
pause
find "a100b" test.txt
pause

输出结果:

C:\Users\rwq119\Desktop\test>exercise1.bat

---------- TEST.TXT
a1b2c3
aovndgobofnklndfa1b2c3dvsbsvdsf
Press any key to continue . . .

第一次找 “a1b2c3”, 这个在第一行是,第三行中间有 “a1b2c3” 这一部分。这些都被找出来了。注意第三个,我们虽然寻找 “a1b2c3”,但是模糊匹配第三行字符含有这个内容,这一行字符都会被打出来(这适用于我们想找一些相关词,但是记不住全部的字符的时候)。
我们继续执行:

C:\Users\rwq119\Desktop\test>exercise1.bat

---------- TEST.TXT
a1b2c3
aovndgobofnklndfa1b2c3dvsbsvdsf
Press any key to continue . . .

---------- TEST.TXT
a1b2c3
a1b2c
aovndgobofnklndfa1b2c3dvsbsvdsf
Press any key to continue . . .

这次我们找 “a”,这次含 “a” 的字符串都会被打印出来。
我们继续执行:

C:\Users\rwq119\Desktop\test>exercise1.bat

---------- TEST.TXT
a1b2c3
aovndgobofnklndfa1b2c3dvsbsvdsf
Press any key to continue . . .

---------- TEST.TXT
a1b2c3
a1b2c
aovndgobofnklndfa1b2c3dvsbsvdsf
Press any key to continue . . .

---------- TEST.TXT
Press any key to continue . . .

C:\Users\rwq119\Desktop\test>

这次我们找 “a100b”,因为不含有这个字符串,所以就没有打印任何出来。
注意:字符串需要加引号,否则报错。错误示范:

C:\Users\rwq119\Desktop\test>find a1b2c3 test.txt
FIND: Parameter format not correct

Type 命令

Type 命令 用以获取文件内容
示例:(依然用上文的 test.txt 文件)

type test.txt
pause

结果:

C:\Users\rwq119\Desktop\test>type test.txt
a1b2c3

a1b2c
3

aovndgobofnklndfa1b2c3dvsbsvdsf
C:\Users\rwq119\Desktop\test>pause
Press any key to continue . . .

START 命令

START 命令 用来启动应用程序,如:
notepad —— 打开记事本;calc —— 启动计算机
示例:

START calc
pause
START notepad
pause

运行 bat 文件以后:
计算机被打开,在点击任意键后,记事本被打开。
我个人尝试了一下不写 START 发现也可以运行。不知道两者区别是什么。有知道的大佬可以评论区讨论一下。

calc
pause
notepad
pause

CALL 命令

CALL 命令 调用程序,也可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理。
具体用法:
(1)示例1:和 start 一样可以调用程序

REM 下面这句会打开当前目录下的 test.txt 文档(保证当前目录下有这个文档)
call test.txt
pause
call calc
pause
call notepad
pause

(2)示例2: call 不单单可以和 start 一样启动应用程序,还可以调用批处理中的标签行(自己定义的子程序)。

@ echo off
echo 1
call :inter
echo 3

: inter
echo 2

结果:

C:\Users\rwq119\Desktop\test>exercise1.bat
1
2
3
2

我们发现 :inter 的子程序被提前调用了一遍,但是和 goto 语句不同,call 后面的语句还是会继续执行。call 执行完了以后,再执行 echo 3,再执行 echo 2 (:inter 标签不影响程序正常执行)。

start 无法调用标签行的子程序,会报错(错误示范):

@ echo off
echo 1
start :inter
echo 3

: inter
echo 2
pause

报错:

1
The system cannot find the file :inter.
3
2
Press any key to continue . . .

(3)示例3:
两者执行方式的不同:
call 命令用于执行另一个批处理程序,并且在执行完成后返回到原批处理程序继续执行。它不会开启新的命令行窗口。
start 命令用于启动一个单独的窗口来运行指定的程序或命令。如果指定的是批处理文件,它也会在新的窗口中执行。
且两者等待执行完成不同:
使用call命令时,批处理文件会等待被调用的程序或命令执行完成后才继续执行下一条命令。
使用start命令时,如果不加/wait参数,批处理文件不会等待启动的程序完成就继续执行下一条命令。
示例:
我们有一个外部的 e2.bat :

@echo off
echo 2
pause

测试 bat 代码 (exercise1.bat):

@echo off
echo 1
call e2.bat
echo 3
pause

运行 exercise1.bat:
在这里插入图片描述
文档依次运行 echo 1, 再运行 e2.bat 中的 echo 2pause,我们按任意键后 e2.bat 运行完毕,此时再回到 exercise1.bat 运行 echo 3。过程中只有一个窗口被打开。

如果 使用 start

@echo off
echo 1
start e2.bat
echo 3
pause

在这里插入图片描述
则会如图所示分别运行(两个窗口),且 exercise1.bat 里的 echo 3 不会等待 e2.bat 完全运行完毕。
(4) startcall 两者的其他不同,我问AI 它给了我以下回答,我还没想到例子实验。大家有问题可以评论区里讨论。
使用环境变量:
call命令执行的程序或命令会继承当前批处理文件的环境变量。
start命令启动的程序或命令则可能会拥有自己独立的环境变量集,这取决于具体的启动方式和参数。
用途:
call命令通常用于执行另一个批处理文件,或者执行需要返回结果的命令。
start命令通常用于启动独立的程序或命令,特别是那些需要在新窗口中运行的程序。
参数传递:
call命令可以将参数传递给被调用的程序或命令。
start命令也可以传递参数,但它还允许你设置窗口标题、工作目录等额外的选项。

备注:
这个是自学 b 站up主 程序员血月做的笔记。原视频链接:
https://space.bilibili.com/327484473/channel/seriesdetail?sid=2069394
因本人水平有限,如有任何问题,欢迎大家批评指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速认识EA(Enterprise Architecture)

前言 企业架构,英文是:Enterprise Architecture,简称:EA,是承接企业战略规划与IT建设之间的桥梁,是企业信息化的核心,主要包括业务架构和IT架构。 架构的本质是管理和解决系统的复杂性&#x…

Windows及Linux系统加固

君衍. 一、Windows加固1、配置简介2、账户配置3、本地配置4、安全设置 二、Linux加固1、配置简介2、网络配置3、日志和审计配置4、访问认证和授权配置5、系统运维配置 一、Windows加固 1、配置简介 通常在Windows安全配置中有两类对象 一类是Windows Server,如win …

用Python实现Cmpp协议的教程

引言&协议概述 (CMPP)是中国移动为实现短信业务而制定的一种通信协议,用于在客户端(SP,Service Provider)和中国移动短信网关之间传输短消息,有时也叫做移动梦网短信业务。CMPP3.0是该协议…

重磅:2024上海不锈钢工业展览会-相聚12月

2024上海不锈钢工业展览会-相聚12月 时间:2024年12月18-20日 地点:上海新国际博览中心 2024上海国际不锈钢工业展览会规划30000平方米展览规模,预设展位1200个,将为国内外不锈钢产业提供一个集“展示、合作、交易、发展”于一…

使用 Web APi - MediaRecorder 获取麦克风资源,报错:Cannot find name ‘MediaRecorder‘ 的解决方法

目录 一、背景: 二、具体解决方法 一、背景: angular 调用 MediaRecorder 来使用麦克风获取声音,(具体要求:angular 前端 按键调用 麦克风,松开按键生成音频文件)代码如下(来自通…

上市企业金融错配、信贷错配、资本错配程度,原始数据测算代码和结果整(1998-2023年)

1、数据来源:根据沪深A股上市公司数据进行测算 2、时间跨度:1998-2023年 3、区域范围:沪深A股上市公司 4、指标说明: 参考邵挺(2010)、周煜皓和张胜勇(2014)的研究,运用金融错配负担水平来衡量信贷错配&#xff08…

数据结构【没头单链表】

目录 ​ 概念与结构 结点 链表的性质 链表的打印分析 实现单链表: 创建单链表数据 申请空间 尾插数据 打印 头插数据 尾删 头删 查询数据 指定位置前插入数据 指定位置后插入数据 删除pos节点 删除pos后面的节点 销毁 链表的分类 链表说明&#…

unittest框架和pytest框架区别及示例

unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库,不需要安装第三方单元测试库,需要安装使用时直接引用 import unittest安装命令:pip3 install pyte…

博客建站4 - ssh远程连接服务器

1. 什么是SSH?2. 下载shh客户端3. 配置ssh密钥4. 连接服务器5. 常见问题 5.1. IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 1. 什么是SSH? SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录到其他…

刚刚 威尼斯影评人周公布 2024 年电影阵容 包括敏感纪录片《本土》

《本土》 威尼斯影评人周是威尼斯电影节专门为首次拍摄电影的人设立的侧边活动,该活动公布了第 39 届威尼斯电影节的七部竞赛片和两部非竞赛片的入选名单,第 39 届威尼斯电影节将于 8 月 28 日至 9 月 7 日举行。 较为及时的作品之一是美国导演迈克尔普…

工业互联网带来什么变革?详解工业互联网产业模式与业务模式!

随着互联网技术的不断进步,工业互联网产业模式应运而生,成为制造业服务化延伸的新引擎。这种模式突破了传统制造业的局限,将服务与产品全生命周期紧密结合,实现了从单一产品制造向提供综合服务的转变。本文将分析工业互联网如何利…

1.30、基于卷积神经网络的手写数字旋转角度预测(matlab)

1、卷积神经网络的手写数字旋转角度预测原理及流程 基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下,我们可以通过构建一个卷积神经网络(Convolutional Neural Network,CNN)来实现该任务。以下…

操作线程的方法

文章目录 前言一、线程的生命周期二、线程的操作方法 1.休眠2.加入3.中断4.礼让总结 前言 将线程看作一个生命的开始和结束,更好理解它各个状态的变化。同时该文会介绍操作线程的主要方法来控制线程的生命周期。这些方法的使用和线程生命周期的变化是密切相关的。 一…

甄选范文“论面向方面的编程技术及其应”,软考高级论文,系统架构设计师论文

论文真题 针对应用开发所面临的规模不断扩大、复杂度不断提升的问题,面向方面的编程(Aspect Oriented Programming,AOP)技术提供了一种有效的程序开发方法。为了理解和完成一个复杂的程序,通常要把程序进行功能划分和封装。一般系统中的某些通用功能,如安全性、持续性、日…

Intellij IDEA 的Plugins加载不出来的解决方法

一、点开插件---右上角设置---HTTP代理设置 二、勾选自动检测代理设置 输入url: https://plugins.jetbrains.com/ 配置完成后,点击确定。 然后点击检查连接,再一次输入那个URL,一般来说可以连接成功了 然后 重启IDEA以刷新缓…

详解数据结构之二叉树(堆)

详解数据结构之二叉树(堆) 树 树的概念 树是一个非线性结构的数据结构,它是由 n(n>0)个有限节点组成的一个具有层次关系的集合,它的外观形似一颗倒挂着的树,根朝上,叶朝下,所以称呼为树。每颗子树的根节点有且只…

7. 聚类算法 KMeans

聚类算法 KMeans 1. 应用:大数据杀熟2. 迭代法3. 代码 1. 应用:大数据杀熟 618、双十一,平台要对用户进行分类:用户: 脑残粉(不降价,或者涨点价)墙头草(给点小优惠券&am…

二叉树基础及实现(一)

目录: 一. 树的基本概念 二. 二叉树概念及特性 三. 二叉树的基本操作 一. 树的基本概念: 1 概念 : 树是一种非线性的数据结构,它是由n(n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因…

数据结构之初始二叉树(4)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 二叉树的基本操作 二叉树的相关刷题(上)通过上篇文章的学习,我们…