计算机技术基础 (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.mzph.cn/bicheng/49414.shtml

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

相关文章

linux 部署flask项目

linux python环境安装: https://blog.csdn.net/weixin_41934979/article/details/140528410 1.创建虚拟环境 python3.12 -m venv .venv 2.激活环境 . .venv/bin/activate 3.安装依赖包(pip3.12 install -r requirements.txt) pip3.12 install -r requirements.txt 4.测试启…

微服务安全——OAuth2详解、授权码模式、SpringAuthorizationServer实战、SSO单点登录、Gateway整合OAuth2

文章目录 Spring Authorization Server介绍OAuth2.0协议介绍角色OAuth2.0协议的运行流程应用场景授权模式详解客户端模式密码模式授权码模式简化模式token刷新模式 OAuth 2.1 协议介绍授权码模式PKCE扩展设备授权码模式拓展授权模式 OpenID Connect 1.0协议Spring Authorizatio…

EXO-chatgpt_api 解释

目录 chatgpt_api 解释 resolve_tinygrad_tokenizer 函数 resolve_tokenizer 函数 调试和日志记录 参数 返回值 初始化方法 __init__ 异步方法 注意事项 chatgpt_api 解释 展示了如何在一个项目中组织和导入各种库、模块和类,以及如何进行一些基本的Web服务设置和配置…

机器学习 | 回归算法原理——最小二乘法

Hi&#xff0c;大家好&#xff0c;我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》&#xff0c;可谓通俗易懂&#xff0c;清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧&#xff01;本章的回归算法原理基于《基于…

智能化数据安全分类分级实践

在当今数字化浪潮的迅猛推进下&#xff0c;企业和组织正遭遇前所未有的数据安全治理挑战。随着海量数据的不断产生、传输、存储和应用&#xff0c;它们面临着来自黑客攻击、内部人员恶意泄露以及数据误操作等多重安全威胁的侵袭。因此&#xff0c;构建一个健全的数据安全治理体…

【快速逆向四/无过程/有源码】浙江工商职业技术学院 统一身份认证

逆向日期&#xff1a;2024.07.23 使用工具&#xff1a;Node.js 加密方法&#xff1a;RSAUtils 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xf…

Unity ShaderLab基础

[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…

Modbus转BACnet/IP网关BA100-配硬件说明

在现代自动化系统中&#xff0c;不同设备和系统之间的通信至关重要&#xff0c;Modbus和BACnet/IP协议虽然各有优势&#xff0c;但它们之间的直接通信存在障碍。钡铼Modbus转BACnet/IP网关作为连接这两种协议的桥梁&#xff0c;允许不同系统之间的无缝数据交换。 一、Modbus转…

Ubuntu22.04安装X11vnc方法

一、问题描述 客户想使用Ubuntu图形化功能,需要远程去操作界面 二、安装方法如下 通常情况&#xff0c;ubuntu不允许root用户运行GUI程序。因此&#xff0c;我们创建普通用户进行安装配置X11vnc服务 1.安装x11vnc程序包 sudo apt-get update sudo apt-get install -y x11v…

内网隧道——HTTP隧道

文章目录 一、ReGeorg二、Neo-reGeorg三、Pivotnacci 实验网络拓扑如下&#xff1a; 攻击机kali IP&#xff1a;192.168.111.0 跳板机win7 IP&#xff1a;192.168.111.128&#xff0c;192.168.52.143 靶机win server 2008 IP&#xff1a;192.168.52.138 攻击机与Web服务器彼此之…

pdf压缩在线免费 pdf压缩在线免费网页版 在线pdf压缩在线免费 pdf压缩工具在线免费

在数字化时代&#xff0c;pdf文件已经成为我们工作、学习和生活中的重要组成部分。然而&#xff0c;体积庞大的pdf文件往往给我们的存储空间、传输速度带来不小的压力。本文将为您揭秘几种简单有效的pdf文件压缩方法&#xff0c;让您轻松应对文件体积过大带来的困扰。 方法一、…

PLC通过IGT-SER系列智能网关快速实现WebService接口调用案例

IGT-SER系列智能网关支持PLC设备数据对接到各种系统平台&#xff0c;包括SQL数据库&#xff0c;以及MQTT、HTTP协议的数据服务端&#xff1b;通过其边缘计算功能和脚本生成的工具软件&#xff0c;非常方便快速实现PLC、智能仪表与WebService服务端通信。 本文是通过智能网关读取…

如何切换网络IP地址?IP切换的应用与方法

随着互联网的发展和普及&#xff0c;我们日常生活中的各种操作和通讯越来越依赖互联网。互联网上存在的一些问题和限制使得更换IP地址成为必要的步骤。下面我们将探讨在互联网业务中&#xff0c;需要更换IP地址的原因与方法。 一、IP轮换的应用 解决访问限制&#xff1a;解决访…

Intellij IDEA多模块分组 实现move to group

新版本idea&#xff0c;没有了move to group的功能&#xff0c;导致模块很多的时候不能分组。2018版本有。 这个分组是虚拟的&#xff0c;不会在磁盘中实际存在。 要实现这个功能&#xff0c;只需要改modules.xml即可。 步骤 1. 找到配置文件 .idea目录下的moudules.xml 2.…

新增ClamAV病毒扫描功能、支持Java和Go运行环境,1Panel开源面板v1.10.12版本发布

2024年7月19日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布了v1.10.12版本。 在这一版本中&#xff0c;1Panel新增了多项实用功能。社区版方面&#xff0c;1Panel新增ClamAV病毒扫描功能、支持Java和Go运行环境&#xff0c;同时1Panel还新增了文件编辑器…

服务器数据恢复—Isilon存储集群节点误删除的数据恢复案例

Isilon存储结构&#xff1a; Isilon存储使用的是分布式文件系统OneFS。在Isilon存储集群里面每个节点均为单一的OneFS文件系统&#xff0c;所以Isilon存储在进行横向扩展的同时不会影响数据的正常使用。Isilon存储集群所有节点提供相同的功能&#xff0c;节点与节点之间没有主备…

怎样将对象转换为包含键值对的对象数组?然后又将数组转换为对象?

​ const formData {location: Park,address: 123 Main St,latitude: 37.7749,longitude: -122.4194 };​1、怎样把这个对象转化为一个数组&#xff1f; 2、然后又怎样把转化后的数组再转化回来&#xff1f; 3、怎样将这两个方法单独封装成函数&#xff1f; 方法 1: 将对象…

基于FPGA的以太网设计(3)----详解各类xMII接口

1、什么是xMII接口 MII (Media Independent Interface)接口,即介质无关接口或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。“介质无关” 表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。 MII接口是MAC和PHY之间的通信接口,MAC产生…

微软的Edge浏览器如何设置兼容模式

微软的Edge浏览器如何设置兼容模式&#xff1f; Microsoft Edge 在浏览部分网站的时候&#xff0c;会被标记为不兼容&#xff0c;会有此网站需要Internet Explorer的提示&#xff0c;虽然可以手动点击在 Microsoft Edge 中继续浏览&#xff0c;但是操作起来相对复杂&#xff0c…