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

news2024/11/15 13:51:43

计算机技术基础 (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 Windows
 Volume Serial Number is AA04-7A06

 Directory 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>          Windows
               0 File(s)              0 bytes
              10 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 Windows
 Volume Serial Number is AA04-7A06

 Directory 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>          Windows
               0 File(s)              0 bytes
              10 Dir(s)  37,158,957,056 bytes free

C:\Users\rwq119>

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

C:\Users\rwq119>dir C:\
 Volume in drive C is Windows
 Volume Serial Number is AA04-7A06

 Directory 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>          Windows
               0 File(s)              0 bytes
              10 Dir(s)  37,154,279,424 bytes free

C:\Users\rwq119>echo %ERRORLEVEL%
0

C:\Users\rwq119>echo %ERRORLEVEL%
0

C:\Users\rwq119>dir c
 Volume in drive C is Windows
 Volume Serial Number is AA04-7A06

 Directory of C:\Users\rwq119

File Not Found

C:\Users\rwq119>echo %ERRORLEVEL%
1

C:\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 Windows
 Volume Serial Number is AA04-7A06

 Directory 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>          Windows
               0 File(s)              0 bytes
              10 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 continue

C:\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 continue

C:\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 continue

C:\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.coloradmin.cn/o/1944630.html

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

相关文章

Redis一致性与分布式锁

Redis一致性 何为redis一致性 即在项目中&#xff0c;redis缓存中的数据要与数据库当中的数据保持一致。 那么这里&#xff0c;就会有小伙伴要问了&#xff0c;redis缓存中的数据不就是从数据库当中查询出来的吗&#xff1f;怎么会不一致呢&#xff1f; 笔者在这里解答一下…

数字信号||离散系统的冲激响应和阶跃响应(3)

实验三 离散系统的冲激响应和阶跃响应 一、实验目的 (1)加深对离散线性移不变(LSI)系统基本理论的理解&#xff0c;明确差分方程与系统函数之间的关系。 (2)初步了解用MATLAB语言进行离散时间系统研究的基本方法。 (3)掌握求解离散时间系统冲激响应和阶跃响应程序的编写方…

Proxmox8基于PC物理机/服务器安装,初始化,挂载磁盘,安装虚拟机

目录 安装文件 开始安装Proxmox 选择启动菜单&#xff0c;F11 后进入启动菜单选择 按需选择是否关闭RAID 选择对应的U盘 进入安装界面 进入安装启动过程 选择系统盘 设置相关信息 设置IP和开启root远程登录 设置dns 设置网卡ip 设置 ssh 远程登录 开机合并local-l…

Java---String类

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 前言 在C语言中已经涉及到字符串了…

四、GD32 MCU 常见外设介绍 (6) ADC 模块介绍

6.1.ADC 基础知识 12 位逐次逼近式模数转换器模块&#xff08;ADC&#xff09;&#xff0c;可以采样来自于外部输入通道、内部输入通道的模拟信号&#xff0c;采样转换后&#xff0c;转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。 6.2.GD…

go语言Gin框架的学习路线(十)

目录 GORM的CRUD教程 查询 普通查询 定义 User 结构体 查询所有用户 查询第一个用户 总结 条件查询 内联条件 额外查询选项 高级查询 链式操作 Scopes 多个立即执行方法 GORM的CRUD教程 CRUD 是 "Create, Read, Update, Delete"&#xff08;创建、查询…

数字图像处理中的常用特殊矩阵及MATLAB应用

一、前言 Matlab的名称来源于“矩阵实验室&#xff08;Matrix Laboratory&#xff09;”&#xff0c;其对矩阵的操作具有先天性的优势&#xff08;特别是相对于C语言的数组来说&#xff09;。在数字图像处理中&#xff0c;为了提高编程效率&#xff0c;我们可以使用多种方式来创…

【UIE模型-傻瓜式教程】飞桨AI Studio中fork实体抽取任务(打车、快递单)并运行教程

文章目录 fork项目环境与数据准备微调训练验证与测试 fork项目 环境与数据准备 安装paddlenlp&#xff08;尽量装paddlenlp2.4.2&#xff0c;否则会报错&#xff01;&#xff09; 下载打车数据 转换数据格式&#xff0c;并划分训练集、验证集和测试集 微调训练 微调训练&#x…

WiFi通信——STM32通过ESP8266-01S与阿里云通信

嵌入式设计中常用的无线通信方式主要由蓝牙、WiFi、Zigbee、Lora、NB-IOT等等。这些是最常用的&#xff0c;也是在实际项目开发中根据项目的数据通信特点来选择相应的无线通信方式。本设计主要是讲解WiFi在嵌入式开发中的使用。 1. ESP8266-01S烧录固件 WiFi通信的频段和蓝牙一…

论文中的流程图参考图片

写论文的时候&#xff0c;在绘制流程图时&#xff0c;一直纠结n是大写还是小写&#xff0c;用不用斜体&#xff0c;号两边要不要空格。今天找到了一张标准的流程图来参考。图片来自 Zhi-Chang Ba et al, Combination of DCE-MRI and NME-DWI via Deep Neural Network for Predi…

学成在线开心学习

环境配置 第一章 项目介绍&环境搭建 项目背景 项目业务框架 项目技术架构 第二章 内容管理模块 本项目使用mybatis-plus的generator工程生成PO类、Mapper接口、Mapper的xml文件 模块工程 模型类的作用 课程查询接口 controller ApiOperation("课程查询接口&qu…

数字化就是要“用数字说话”运营,按“效果付费”经营

随着数字化技术的迅速发展&#xff0c;企业所处的市场环境发生了深刻的变革。在这个数字化转型时期&#xff0c;数据成为了企业决策的关键依据&#xff0c;“用数字说话”已成为企业运营的基本准则。而“效果付费”作为一种基于实际成果的商业模式&#xff0c;正逐渐受到企业经…

【QAC】Dashboard服务端如何配置

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决Dashboard服务端如何配置的问题。 2、 问题场景 客户想使用Dashboard&#xff0c;Dashboard服务端如何配置。 3、软硬件环境 1、软件版本&#xff1a;HelixQAC23.04 2、机器环境&#xff1a;Windows 64bit 3…

Linux_权限3

Linux所对应的文件类型 1.在Win下&#xff0c;有文件类型&#xff0c;通常通过后缀标识 日常用的就是windows系统这里不做举例. 2.Linux的文件类型不通过后缀区分&#xff08;不代表Linux不用后缀) 其中需要注意的是第一个字符表示文件类型的含义 - :普通文件, 文本, 源代码…

AtCoder Beginner Contest 363(A~D题)

A - Piling Up 思路: 我们只需要找到下一阶段的下限。a / 100 是本阶段1 变成下一阶段&#xff0c;再 * 100变成下限&#xff0c;再与原来的相减即可。 代码: #include<bits/stdc.h> using namespace std; #define N 200010 typedef long long ll; typedef unsigned l…

Biomimetics 综述分享:肌电假肢手的交互操作控制综述

近些年假肢灵巧手成为了热点研究方向。此前有综述研究回顾了包括基于表面肌电信号的预测连续上肢运动的方法、基于表面肌电信号的多任务人机交互应用&#xff0c;以及肌电控制中的各种性能指标。近期&#xff0c;期刊Biomimetics&#xff08;JCR Q1&#xff09;发表了“面向肌电…

定时器+外部中断实现NEC红外线协议解码

一、前言 1.1 功能介绍 随着科技的进步和人们生活水平的提高&#xff0c;红外遥控器已经成为了日常生活中不可或缺的电子设备之一&#xff0c;广泛应用于电视、空调、音响等多种家电产品中。 传统的红外遥控器通常只能实现预设的有限功能&#xff0c;无法满足用户对设备更加智…

Mac 下华为鸿蒙 :DevEco Studio 开发工具下载

1.登录&#xff1a;华为开发者中心--开发--下载工具DevEco Studio 2.下载完成后 &#xff0c;安装&#xff0c;并创建一个新项目。 3.Tools --点击SDK Manager 下载SDK: 如果报&#xff1a;淘宝镜像源错误&#xff1a; npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_H…

Threejs——辅助视图的旋转轴

官网的代码&#xff1a;link 实现这个效果 import {CylinderGeometry,CanvasTexture,Color,Euler,Mesh,MeshBasicMaterial,Object3D,OrthographicCamera,Quaternion,Raycaster,Sprite,SpriteMaterial,SRGBColorSpace,Vector2,Vector3,Vector4 } from three;class ViewHelper …

FP5207+音频功率放大器的组合解决方案-适用于便携式音频播放器、无线耳机、智能音箱和车载音响系统等高质量音频输出需求的产品,以提高电池供电的效率和输出功率

随着消费者对智能家居的需求增长&#xff0c;智能音响市场成为重要增长点。同时&#xff0c;音响技术也在不断发展&#xff0c;音响及扬声器的功能和性能不断提升。 蓝牙音箱&#xff0c;这类音箱供电是以锂电池为主&#xff0c;一般选用内置升压的音频功放芯片&#xff0c;音响…