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

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

本节主要讲解一些 bat 批处理文件中的一些特殊符号,包括 @, %, >>>, |, ^, &&&||, " ", ,, ;, ()

回显屏蔽符 @

回显屏蔽符 @: 这个字符在批处理中的意思是关闭当前行的回显。
ECHO OFF 可以关闭掉整个批处理命令的回显,但不能关掉 ECHO OFF 这个命令的本身回显,我们常常在 ECHO OFF 这个命令前加 @ 就可以起到所有命令均不回显的作用。详细在 Note1 中有介绍,这里不多举例了。

变量引导符 %

变量引导符 %:这个 % 严格来说算不上命令,它只是批处理中的参数而已(多个 % 一起使用的情况除外,以后会详细介绍)。
引用变量用 %var% (var 代表变量名),调用程序外部参数用 %1%9 等等
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*为命令行传递给批处理的参数
%0 批处理文件本身,包括完整的路径和拓展名
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
参数 %0 具有特殊功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
举例:

@echo off  
set var1=123
echo %var1%
pause

结果:

C:\Users\rwq119\Desktop\test>exercise1.bat
123
Press any key to continue . . .

重定向符 >>>

重定向符 > :输出重定向命令,这个字符的意思是传递并且覆盖,他所起的作用是将运行的结果传递到后面的范围。
重定向符 >>:这个符号的作用和 > (大于号)有点类似,但他们的区别是 >> 是传递并在文件的末尾追加内容,而 > 是覆盖。
示例:

@echo off  
echo 1 
echo 2 > res.txt
echo 3

运行后生成文件 res.txt :

在这里插入图片描述
我们再运行一遍,效果一样还是生成一个 res.txt,里面只有 2。这是因为再运行 echo 2 > res.txt 的时候,原来的 res.txt 被覆盖了,重新生成一个新的文件。
如果用 >>

@echo off  
echo 1 > res.txt
echo 2 >> res.txt
echo 3 >> res.txt

echo 1 > res.txt 会先生成一个 res.txt,并往里打印1。后面的 >> 会向这个文件追加打印 2,3,不会覆盖原来的文件。

在这里插入图片描述

命令管道符 |

格式:第一条命令 | 第二条命令 [| 第三条命令...] 意思是将第一条命令的结果作为第二条命令的参数来使用。
比如: dir C:\| find “txt” 以上命令是,查找 C:\ 所有,并发现 TXT 的 文本文档。

转义字符 ^

转移符 ^ 是对特殊符号 >, <, & 的前导字符,在命令中他将以上三个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。
比如:

 echo 1234 ^>1234.txt 

结果直接打印

echo 1234 ^>1234.txt

另外,转义字符还可以用作续航符号,比如:

@echo off  
echo 1^
2^
3^
4^
5
pause

结果:

12345
Press any key to continue . . .

组合命令 &&&||

组合命令 &&&|| 为组合命令,顾名思义,就是可以把多个命令组合起来当成一个命令来执行。这在批处理脚本里是允许的,而且用的非常广泛。
(1)& (AND) 这个符号允许一行中使用两个以上的不同命令,当第一个命令执行失败了,也不影响后面的命令执行。这里 & 两边的命令是顺序执行的,从前往后执行。
语法:第一条命令 & 第二条命令 [& 第三条命令 ...]
示例:

dir Z:\ & dir y:\ & dir C:\

此命令会连续显示 z,y,c 盘符的内容,不理会该盘是否存在

C:\Users\rwq119>dir Z:\ & dir y:\ & dir C:\
The system cannot find the path specified.
The system cannot find the path specified.Volume in drive C is WindowsVolume Serial Number is AA04-7A06Directory of C:\02/21/2023  12:43 PM    <DIR>          nm75g64
12/07/2019  11:14 AM    <DIR>          PerfLogs
06/13/2024  10:29 AM    <DIR>          Program Files
07/18/2024  10:40 AM    <DIR>          Program Files (x86)
08/25/2023  05:18 PM    <DIR>          RBuildTools
02/20/2023  05:52 PM    <DIR>          rtools42
02/08/2023  01:27 PM    <DIR>          SMSTSLog
04/03/2024  05:09 PM    <DIR>          Temp
02/20/2023  11:29 AM    <DIR>          Users
07/10/2024  10:35 AM    <DIR>          Windows0 File(s)              0 bytes10 Dir(s)  37,157,269,504 bytes free

(2)&& 用这个符号可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令。
示例:

dir Z:\ && dir y:\ && dir C:\

这里第一条命令执行失败,后面的命令也不会执行

C:\Users\rwq119>dir Z:\ && dir y:\ && dir C:\
The system cannot find the path specified.

(3)|| (注意是两个 |, 与管道符号 | 区别) 组合命令 或 ,用这个可以执行多条命令,当第一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
语法:第一条命令 || 第二条命令 [ || 第三条命令 ...]

dir Z:\ || dir C:\ || dir C:\ || dir y:\

结果:

C:\Users\rwq119>dir Z:\ || dir C:\ || dir C:\ || dir y:\
The system cannot find the path specified.Volume in drive C is WindowsVolume Serial Number is AA04-7A06Directory of C:\02/21/2023  12:43 PM    <DIR>          nm75g64
12/07/2019  11:14 AM    <DIR>          PerfLogs
06/13/2024  10:29 AM    <DIR>          Program Files
07/18/2024  10:40 AM    <DIR>          Program Files (x86)
08/25/2023  05:18 PM    <DIR>          RBuildTools
02/20/2023  05:52 PM    <DIR>          rtools42
02/08/2023  01:27 PM    <DIR>          SMSTSLog
04/03/2024  05:09 PM    <DIR>          Temp
02/20/2023  11:29 AM    <DIR>          Users
07/10/2024  10:35 AM    <DIR>          Windows0 File(s)              0 bytes10 Dir(s)  37,158,957,056 bytes freeC:\Users\rwq119>

补充:如何判定命令是否失败了?
不是靠自己的主观判断和输出提示来判断的,而是去检测 ErrorLevel这个变量的值 如果是 0 表示成功,非0 表示失败。
可以 用 echo %ERRORLEVEL% 来查看 上一条命令是否执行失败 (可以多次查询,echo 命令不会重置 ErrorLevel 的值)
示例:

C:\Users\rwq119>dir C:\Volume in drive C is WindowsVolume Serial Number is AA04-7A06Directory of C:\02/21/2023  12:43 PM    <DIR>          nm75g64
12/07/2019  11:14 AM    <DIR>          PerfLogs
06/13/2024  10:29 AM    <DIR>          Program Files
07/18/2024  10:40 AM    <DIR>          Program Files (x86)
08/25/2023  05:18 PM    <DIR>          RBuildTools
02/20/2023  05:52 PM    <DIR>          rtools42
02/08/2023  01:27 PM    <DIR>          SMSTSLog
04/03/2024  05:09 PM    <DIR>          Temp
02/20/2023  11:29 AM    <DIR>          Users
07/10/2024  10:35 AM    <DIR>          Windows0 File(s)              0 bytes10 Dir(s)  37,154,279,424 bytes freeC:\Users\rwq119>echo %ERRORLEVEL%
0C:\Users\rwq119>echo %ERRORLEVEL%
0C:\Users\rwq119>dir cVolume in drive C is WindowsVolume Serial Number is AA04-7A06Directory of C:\Users\rwq119File Not FoundC:\Users\rwq119>echo %ERRORLEVEL%
1C:\Users\rwq119>echo %ERRORLEVEL%
1

命令优先级

注意:组合命令和重定向命令一起使用的时候要注意优先级
管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令
等级高 | 【管道符】
等级中 > 【重定向符】
等级低 & 【组合命令】
(批处理在执行命令时,优先处理等级高的特殊符号)

字符串界定符 " "

双引号 " "(注意单引号不行),允许在字符串中包含空格。
比如进入一个特殊目录可以用如下方法:

cd "program files"
cd progra~1
cd pro*

以上三种方法都可以进入 program files 这个目录

其他使用 " " 例子:

dir "program files"

逗号命令 ,

逗号 ,,相当于空格,在某种情况下可以当做空格来使用
示例:

dir,C:\

结果 (和 dir C:\ 一样):

C:\Users\rwq119>dir,C:\Volume in drive C is WindowsVolume Serial Number is AA04-7A06Directory of C:\02/21/2023  12:43 PM    <DIR>          nm75g64
12/07/2019  11:14 AM    <DIR>          PerfLogs
06/13/2024  10:29 AM    <DIR>          Program Files
07/18/2024  10:40 AM    <DIR>          Program Files (x86)
08/25/2023  05:18 PM    <DIR>          RBuildTools
02/20/2023  05:52 PM    <DIR>          rtools42
02/08/2023  01:27 PM    <DIR>          SMSTSLog
04/03/2024  05:09 PM    <DIR>          Temp
02/20/2023  11:29 AM    <DIR>          Users
07/10/2024  10:35 AM    <DIR>          Windows0 File(s)              0 bytes10 Dir(s)  37,178,507,264 bytes free

分号命令 ;

推荐直接使用 空格
当命令相同时,可以将不同目录用来隔离开来,但执行效果不变,如果执行过程中发生错误,则只返回错误报告,但程序仍会执行。
事实上, ; 对批处理来说只是用来分隔的符号,把 ; 替换成空格 也可以达到这种效果,并且更规范
比如,有一个 bat 文件代码如下:

dir c:\;d:\;e:\;z:\
echo bat is continue
pause

结果:

C:\Users\rwq119\Desktop\test>dir c:\;d:\;e:\;z:\
The system cannot find the path specified.C:\Users\rwq119\Desktop\test>echo bat is continue
bat is continueC:\Users\rwq119\Desktop\test>pause
Press any key to continue . . .

第一行的 dir c:\;d:\;e:\;z:\ 此命令相当于 同时要做

dir c:\
dir d:\
dir e:\
dir z:\

但是我们电脑没有 d,e,z 盘,dir c:\;d:\;e:\;z:\ 会执行失败,返回错误报告,但是后面 echo bat is continue 依然执行。
事实上, 所能达到的效果是一样的 (更推荐)
有一个,bat 文件如下

dir c:\ d:\ e:\ z:\
echo bat is continue
pause

执行结果一样:

C:\Users\rwq119\Desktop\test>dir c:\ d:\ e:\ z:\
The system cannot find the path specified.C:\Users\rwq119\Desktop\test>echo bat is continue
bat is continueC:\Users\rwq119\Desktop\test>pause
Press any key to continue . . .

逗号也一样 ,

C:\Users\rwq119\Desktop\test>dir c:\,d:\,e:\,z:\
The system cannot find the path specified.C:\Users\rwq119\Desktop\test>echo bat is continue
bat is continueC:\Users\rwq119\Desktop\test>pause
Press any key to continue . . .

括号命令 ()

小括号 () 在批处理编程中有特殊作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行
括号在 for 语句和 if 语句中常见,用来嵌套使用循环或条件语句,其实括号 () 也可以单独使用。
比如,下面两种的写法效果一样,两种写法都被视为是一条命令行:

echo 1 & echo 2 & echo 3

也可以写成:

(
echo 1 
echo 2 
echo 3
)

这后面的 () 需要在批处理文件中使用,或者在 cmd 中一行一行的输入。(在 cmd 中使用 ( 他会问你 是否要输入更多命令 More? 直到你输入另一个 ) 为止)。无论是bat文件还是cmd中,不能打成一行否则效果不对(后面的内容会被 echo 打印出),错误示范如下:

C:\Users\rwq119>(echo 1 echo 2 echo 3)
1 echo 2 echo 3

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构中的八大金刚--------八大排序算法

目录 引言 一&#xff1a;InsertSort(直接插入排序) 二&#xff1a;ShellSort(希尔排序) 三&#xff1a;BubbleSort(冒泡排序) 四&#xff1a; HeapSort(堆排序) 五&#xff1a;SelectSort(直接选择排序) 六&#xff1a;QuickSort(快速排序) 1.Hoare版本 2.前后指针版本 …

【Hot100】LeetCode—416. 分割等和子集

目录 题目1- 思路2- 实现⭐152. 乘积最大子数组——题解思路 3- ACM 实现 题目 原题连接&#xff1a;416. 分割等和子集 1- 思路 理解为背包问题 思路&#xff1a; 能否将均分的子集理解为一个背包&#xff0c;比如对于 [1,5,11,5]&#xff0c;判断能否凑齐背包为 11 的容量…

Linux云计算 |【第二阶段】AUTOMATION-DAY2

主要内容&#xff1a; 部署GitLab、配置管理GitLab、CI/CD概述、Jenkins概述、部署Jenkins&#xff08;初始化、拷贝插件&#xff09; 一、GitLab概述 GitLab 是一个基于 Web 的 Git 仓库管理工具&#xff0c;它提供了一个集成的开发环境和代码管理平台。GitLab 不仅支持 Git…

便携式自动气象站:科技赋能气象观测

便携式自动气象站&#xff0c;顾名思义&#xff0c;就是一款集成了多种气象传感器&#xff0c;能够自动进行气象观测和数据记录的设备。它体积小巧、重量轻&#xff0c;便于携带和快速部署&#xff0c;可以在各种环境下进行气象数据的实时监测。同时&#xff0c;通过内置的无线…

keil单步调试需要点击多次

问题描述&#xff1a;在进行调试的时候&#xff0c;点击单步调试&#xff0c;总是需要点击好几次才可以运行到下一条语句。 我点击单步调试的时候&#xff0c;会在红色框内进行单步运行&#xff0c;也就是在汇编代码内单步执行。 解决办法&#xff1a; 关闭汇编窗口 就是这个小…

案例研究|柯尼卡美能达软件开发(大连)有限公司基于DataEase构筑内部数据可视化体系

柯尼卡美能达软件开发&#xff08;大连&#xff09;有限公司于2007年5月25日注册成立。公司以“洞悉在工作的人们真实情况&#xff0c;探寻他们的愿望&#xff0c;持续提供使人们更加幸福的服务”为使命&#xff0c;致力于系统品质测试服务、软件开发服务、IT安全服务、高级BPO…

SpringBoot缓存注解使用

背景 除了 RedisTemplate 外&#xff0c; 自Spring3.1开始&#xff0c;Spring自带了对缓存的支持。我们可以直接使用Spring缓存技术将某些数据放入本机的缓存中&#xff1b;Spring缓存技术也可以搭配其他缓存中间件(如Redis等)进行使用&#xff0c;将某些数据写入到缓存中间件…

Golang | Leetcode Golang题解之第264题丑数II

题目&#xff1a; 题解&#xff1a; func nthUglyNumber(n int) int {dp : make([]int, n1)dp[1] 1p2, p3, p5 : 1, 1, 1for i : 2; i < n; i {x2, x3, x5 : dp[p2]*2, dp[p3]*3, dp[p5]*5dp[i] min(min(x2, x3), x5)if dp[i] x2 {p2}if dp[i] x3 {p3}if dp[i] x5 {p5…

Xcode学习笔记

Xcode学习笔记 前言一、在Mac上安装Xcode并做点简单设置1.查看一下Xcode的版本 二、使用Xcode新建一个Playground三、swift基础-变量1.swift是什么2.变量是什么3.建立变量4.改变变量5.小帖士 四、swift基础-变量命名规范1.使用小驼峰命名法2.使用有意义且描述性的名称3.避免使用…

《云原生安全攻防》-- 容器攻击案例:镜像投毒与Fork炸弹

在本节课程中&#xff0c;我们将介绍两个比较有意思的容器攻击案例&#xff0c;镜像投毒与Fork炸弹。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; 镜像投毒&#xff1a;构建恶意镜像&#xff0c;诱导用户拉取镜像创建容器。 Fork炸弹&#xff1a;Fork炸弹的攻击…

Mysql基础速过

一、数据库相关概念 1.1 相关概念 名称全称简称数据库存储数据的仓库、数据是有组织的进行存储DataBase(DB)数据库管理系统操作和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准Structu…

【iOS】Tagged Pointer

目录 前言什么是Tagged Pointer&#xff1f;引入Tagged Pointer技术之前引入Tagged Pointer之后总结 Tagged Pointer原理&#xff08;TagData分析&#xff09;关闭数据混淆MacOS分析NSNumberNSString iOS分析 判断Tagged PointerTagged Pointer应用Tagged Pointer 注意点 Tagge…

科研绘图系列:R语言微生物堆积图(stacked barplot)

介绍 堆叠条形图是一种数据可视化图表,它通过将每个条形分割成多个部分来展示不同类别的数值。每个条形代表一个总体数据,而条形内的每个部分则代表该总体数据中不同子类别的数值。这种图表特别适合展示整体与部分的关系,以及各部分在整体中的比例。 特点: 多部分条形:每…

Python爬虫:代理ip电商数据实战

引言&#xff1a;数据访问管理引发的烦恼 作为一名Python博主&#xff0c;爬虫技能对于获取和分析数据至关重要&#xff0c;经常爬一下&#xff0c;有益身心健康嘛。爬虫技术对很多人来说&#xff0c;不仅仅是一种工具&#xff0c;更像是一种艺术&#xff0c;帮助我们从互联网…

工程视角:数据结构驱动的应用开发--字典(dictionary),列表(list)与实体

这里写目录标题 业务业务场景流程分析 实现数据访问层&#xff08;DAL&#xff09;业务逻辑层&#xff08;BLL&#xff09;用户界面层&#xff08;UI&#xff09;工具类 设计思路为什么抽出工具类关于U层使用字典的好处工程视角 业务 业务场景 在一个金融应用系统中&#xff0c…

【益智问题】十三球称重

十三球称重 问题描述解决方案 问题描述 有13个外表一模一样的小球产品&#xff0c;其中有一个是次品&#xff0c;其质量与其他12个略有差别&#xff0c;但不知道是重还是轻。这13个球上都有标号&#xff0c;现在给你-架天平&#xff0c;只能使用三次&#xff0c;把这个次品小球…

Elasticsearch:Golang ECS 日志记录 - zap

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志&#xff0c;并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下&#xff0c;会添…

58、主从复制数据库+读写分离

mysql的主从复制和读写分离&#xff08;面试问原理&#xff09; mysql的主从复制和读写分离&#xff1a; 主从复制 面试必问 主从复制的原理。 读写分离&#xff0c;MHA 一、主从复制 1.1、主从复制的模式&#xff1a; 1、mysql的默认模式&#xff1a; 异步模式&#xf…

Three.js 官方文档学习笔记

Address&#xff1a;Three.js中文网 (webgl3d.cn) Author&#xff1a;方越 50041588 Date&#xff1a;2024-07-19 第一个3D案例—创建3D场景 创建3D场景对象Scene&#xff1a; const scene new THREE.Scene(); 创建一个长方体几何对象Geometry&#xff1a; const geomet…

FTP、NFS、SAMBA系统服务

⼀、rsync托管xinetd 1 、为什么要进⾏服务托管 独⽴服务&#xff1a;独⽴启动脚本 ssh ftp nfs dns ... 依赖服务 : 没有独⽴的启动脚本 rsync telnet 依赖 xinetd 服务&#xff08;独⽴服务&#xff09; 2 、如何将 rsync 托管给 xinetd 服务去管理&#xff1f; 第⼀步&am…