批处理Batch学习

news2024/9/29 18:41:18

批处理Batch学习

前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。

基础认识

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理的扩展名为bat。比较常见的批处理包含两类:DOS批处理和PS批处理。我们以下及后续所介绍的主要以DOS批处理为主。

批处理文件默认的存储格式为ANSI,即使用Windows系统默认的编码格式。但是我们并不能直接创建批处理文件,通常都是创建文本文件然后更改扩展名而得到,因此需要再将文件的编码格式手动更改为ANSI格式,这样就可以防止中文乱码的情况。

解释器

  • 批处理大小写不敏感。
  • 批处理解释器默认是读取一行代码,然后解释一行执行
  • 批处理解释器如果读取到圆括号"(“,则认为知道下一个对应的”)",为结束。此方式可以让批处理解释器一次性解释执行多条指令(在if语句中尤为体现)
  • CTRL+C可以退出当前正在执行的批处理。

语法

echo
echo指令是批处理中最简单也是最常见的指令。它相当于其他语言的打印,如Python的"print"。echo可以将他后面的信息输出在终端。注意输出信息与echo之间需要有空格。

echo Hello,World!

在这里插入图片描述
关闭回显

当我们创建一个批处理脚本然后写入将以上的指令保存并运行后,会发现,我们写的每个命令都会在终端显示出来,一旦脚本复杂会显得很不美观,那能不能让它不显示我们到底写了什么命令呢?答案当然是可以的。我们只需要在每条命令前加个@就可以实现。

@echo Hello,World!

在这里插入图片描述

问题又要来了,如果命令一多,岂不是要每条都增加一个@,还有没有更方便点的方法呢?当然有!
echo off表示关闭回显功能,可以将该命令放置于脚本顶部,这样一来,下面所写的命令的回显都将关闭

@echo off
echo Hello,World!
echo Hello,batch!

打开回显则是@echo on

pause

暂停批处理程序,并自动输出显示“请按任意键继续. . .”。注意是暂停!

在这里插入图片描述
还有一种“pause>nul”写法,纯暂停,不输出显示任何内容。

batch批处理——变量的定义set

batch批处理——变量的定义set

答复命令中的提问

可以使用管道命令,将前面的结果作为后面的输入。例如:

@echo off
rd /s c:\abc
pause

在这里插入图片描述

在以上的脚本中,执行后,会显示:c:\abc, 是否确认(Y/N)?
因为这里abc是一个不为空的文件夹,所以当用rd命令进行删除时,就会询问你Y或N,这时通常需要手动输入。我们可以修改脚本让系统帮我们自动输入Y进行确认:

@echo off
echo Y|rd /s c:\abc
pause

在这里插入图片描述

建立文件或增加文件内容

@echo off
echo 123>myfile.txt
pause

在这里插入图片描述
以上的命令可以在当前目录下建立一个名为myfile.txt的文件,文件内容为123,继续追加内容可以使用:

@echo off
echo 123456>>myfile.txt

如果想建立一个空文件,则可利用输出空行的命令:

@echo off
echo. >myfile.txt

输出空行(换行)

在批处理中",“、”.“、”:“等可以紧跟在echo后面起到输出空行的作用。注意一定不能有空格,否则会被当做信息输出到屏幕中。另外还可以用” / ] + \这些符号代替。

rem

rem表示注释

运算操作

  • 加减乘除
@echo off

set /a var = 10*5-6
echo %var%
pause

以上脚本,采用set /a 变量名方式来定义变量,(通过表达式来定义变量),最后使用%变量名%的方式输出变量,停止

在这里插入图片描述

  • 分组优先级 ()

重定向运算

  • > 将内容写入文件,覆盖原文件内容(echo ‘content’ > a.txt)
  • >> 将内容追加写入文件,不覆盖原有内容(echo ‘content’ >> a.txt),也可以理解为创建文件并写入
  • type 输出文件里面的内容
  • <
  • <<
  • 关系运算
  • >
  • <

多名命令运算

  • && 具有短路,第一个命令执行失败就不会执行第二个命令
  • || 具有断路,第一个命令执行成功就不会执行第二个命令

管道符号

  • |
  • 命令管道符 表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象。可以理解为管道符后面是筛选条件,前面是筛选对象。例如,dir | find ".txt"就是筛选该目录下的所有 txt 文件
@REM 筛选该目录下的 txt 文件
dir | find ".txt"

@REM 筛选 主机与其他地址建立链接的网络连接
netstat -an | find "ESTABLISHED"

在这里插入图片描述

dir:显示当前目录中的文件和子目录

在这里插入图片描述

启动命令 start

  • 批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序继续往下执行,不理会外部程序的运行状况)
  • 如果直接运行外部程序则必须等外部程序完成后才继续执行剩下的指令

执行完打印,再打开d盘

@echo off
echo 1
echo 2
echo 3
echo 4
start explorer d:\
echo 5
echo 6
echo 7
echo 8
pause > nul

在这里插入图片描述

调用其他bat文件

  • call 可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理。
@echo off

echo beforeCall
call C:\Users\Administrator\Desktop\shell\Batch\hello.bat
echo afterCall

在这里插入图片描述

文件夹或文件相关 命令

  • dir 查看对应下面的目录,不包括隐藏目录;
  • 查看包括隐藏目录:dir /A
  • mkdir 创建目录
  • rmdir 删除目录
  • cd 切换目录
  • ren 重命名文件
  • copy 目录复制
  • del 删除一个或多个文件
  • move 移动文件并重命名文件和目录(文件剪切)
@rem 移动文件并重命名
move c:\1\1.txt c:\2\2.txt

条件判断

  • if … else … 结构
@echo off
@REM if-else 结构,判断字符串是否为规定的字符串
set v=hello

if %v% == hello (
  echo ok
  ) else (
    echo no
  )
pause>nul

定义变量v,如果v等于hello就打印ok,否则打印no。Batch里的逻辑部分使用()括起来

  • exist 判断文件在路径中是否存在
@echo off
@REM 程序用来判断 当前bat文件是否存在

if exist  C:\Users\Administrator\Desktop\shell\Batch\test.bat (
  echo ok
) else (
  echo no
)

pause>nul
  • 文件判断删除
@echo off
@REM 程序用来判断 当前test文件是否存在,存在即删除

if exist C:\Users\Administrator\Desktop\shell\Batch\test.bat (
  echo file is find!
  del C:\Users\Administrator\Desktop\shell\Batch\test.bat
) else (
  echo file is no find!
)

pause>nul

循环结构

  • 语句
// %variable:指定一个单一字母可替换的参数。(区分大小写)
// (set):指定一个或一组文件。可以使用通配符。
// command:指定对每个文件执行的命令。
// command-parameters:为特定命令指定参数或命令行开关。

for %variable in (set) DO command [command-parameters]

.bat文件与命令行窗口的一个小差异
在.bat文件中会将%%视为命令行窗口中的%,因此,for循环的参数例如%i,在.bat文件中应写成%%i

命令扩展

  • /d 与目录名(文件夹)匹配,不与文件名匹配
  • 遍历目录(文件夹)
for /d %variable IN (set) do command [command-parameters]

for /d %%name in (路径/*) do 具体操作 遍历目录(文件夹)
@echo off
@REM 遍历当前文件夹下的文件夹,并进行操作 (删除test文件夹)
@REM %%a相当于item

@REM 简写
@REM for /d %%a in (*) do if %%a == test rmdir %%a

@REM 拆开写

for /d %%a in (*) do (
  if %%a == test (
    rmdir %%a
    echo delete success
  ) else (
    echo not found files
  )
)

pause>nul
  • -r 遍历目录(文件夹)和子目录下文件
for /r [[drive:]path] %variable in (set) do command [command-parameters]

for /r *%%file in (匹配规则 例 *.txt) do 具体操作 遍历目录(文件夹)和子目录下文件

遍历[drive:]path,并指向每个子目录中的FOR语句。
若/R后没有指定目录,则使用当前目录

@echo off
@REM 遍历该目录下所有文件夹, 并进行操作

for /r "C:\Users\Administrator\Desktop\shell\Batch" %%file in (*.txt) do echo %%file

echo delete all *.txt

for /r "C:\Users\Administrator\Desktop\shell\Batch" %%file in (*.txt) do del %%file

pause>nul
  • /l 遍历数字
  • 以增量形式从start到end的一个数字序列,例如:(1,1,5)将产生序列1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)。
for /l %variable in (start,step,end) do command [command-parameters]

for /L %%num in (start, step, end) do 具体操作 遍历数字
@echo off
@REM 遍历数字
for /l %%n in (1, 1, 20) do echo %%n

@REM ping 对应的ip地址 运行输入 对应的ip地址(192.168.0.1)
for /l %%n in (1, 1, 20) do ping %1.%%n

pause>nul
  • /f 遍历文件内容
for /f %%content in (文件名) do 具体操作 
@echo off
@REM 遍历文件内容

for /f %%c in (myfile.txt) do echo %%c

pause>nul

在这里插入图片描述

以上内容参考自:
https://blog.csdn.net/weixin_38813807/article/details/125448252

https://blog.csdn.net/weixin_46056955/article/details/127491162

https://blog.csdn.net/weixin_42594134/article/details/109195311

https://blog.csdn.net/weixin_44256803/article/details/106636505

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

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

相关文章

Linux下Python脚本的编写解析fio(minimal格式)(三)

在服务器测试(storage)过程中&#xff0c;会看到很多人写跑fio的脚本用minimal格式来解析&#xff0c;因为这种格式返回的结果对与脚本(shell,python)解析log非常方便.下面介绍一下这种方式下,用Python来解析log 1 一般客户会要求结果中出现一下参数的值&#xff1a; bandwidth…

推荐几款免费且优秀的短视频配音软件,你值得拥有

科技的迅猛发展带来了新生事物的不断涌现&#xff0c;短视频就是其中之一&#xff0c;有的小伙伴喜欢在茶余饭后记录生活的点点滴滴&#xff0c;也有人将之变成了日常的主要收入来源&#xff0c;但无论是哪种&#xff0c;一款好的AI配音软件都是必不可少的&#xff0c;很多短视…

LeetCode 88. 合并两个有序数组

原题链接 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1nums1nums1 和 nums2nums2nums2&#xff0c;另有两个整数 mmm 和 nnn &#xff0c;分别表示 nums1nums1nums1 和 nums2nums2nums2 中的元素数目。 请你 合并 num…

Flask像Jenkins一样构建自动化测试任务

flask这个框架很轻量&#xff0c;做一些小工具还是可以很快上手的。 1、自动化 某一天你入职了一家高大上的科技公司&#xff0c;开心的做着软件测试的工作&#xff0c;每天点点点&#xff0c;下班就走&#xff0c;晚上陪女朋友玩王者&#xff0c;生活很惬意。 但是美好时光…

常用类(四)Math类和Arrays类

一、Math类 Math类包含用于执行基本数学运算的方法&#xff0c;如初等指数、对数、平方根和三角函数 我们查看math类的常用方法&#xff1a; 我们查看他的源码如下所示&#xff1a; 我们查看他的类图&#xff1a; 他的这些方法基本都是静态的&#xff1a; 我们的代码设置如下所…

重生之我是赏金猎人-SRC漏洞挖掘(十三)-攻防对抗/梦中绝杀X脖代理商

0x00 前言 前两天在国企实验室的朋友遇到了一个棘手的目标&#xff0c;听说之前没人能打点进去&#xff0c;只能靠xxxxx取证 我一听来了兴趣&#xff0c;在梦中臆造了一个靶场进行渗透&#xff0c;并且已获得相关授权 还请各位看官请勿对号入座&#xff0c;如有雷同&#xf…

百舸争流,奋楫者先 | 大势智慧2023年度销售动员大会圆满召开

春回大地&#xff0c;万物新生。满载生机与动力&#xff0c;2月10日&#xff0c;大势智慧2023年度销售动员大会圆满召开。 大势智慧CEO黄先锋、CTO张帆、副总裁周济安、运营中心副总经理段鸿、全国各分公司总经理、总监及全体销售成员线上、线下共聚一堂&#xff0c;以“百舸争…

Android Jetpack组件DataStore之Proto与Preferences存储详解与使用

一、介绍 Jetpack DataStore 是一种数据存储解决方案&#xff0c;允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。 如果您当前在使用 SharedPreferences 存储数据&#xff0c;请考虑迁移到 DataStore&#…

vscode构建Vue3.0项目(vite,vue-cli)

构建Vue3.0项目构建Vue3.0项目1.使用Vite构建vue项目的方法以及步骤1. 安装vite2. 运行vite vue 项目3.说明2.使用vue-cli构建vue项目的方法以及步骤1.安装全局vue cli —— 脚手架2、VSCode3.报错4.运行构建Vue3.0项目 1.使用Vite构建vue项目的方法以及步骤 1. 安装vite n…

这才是计算机科学_计算机安全

文章目录一、前言1.1身份认证authentication1.2 权限1.3 开发安全二、黑客2.1 NAND镜像2.2 缓冲区溢出2.3 注入三、加密 cryptography3.1 列位移加密3.2 软件加密3.3 密钥交换一、前言 计算机网络中并不是没有人搞破坏的 但是网络无法区分中要执行的是好是坏 计算机安全&#…

设计模式第七讲-外观模式、适配器模式、模板方法模式详解

一. 外观模式 1. 背景 在现实生活中&#xff0c;常常存在办事较复杂的例子&#xff0c;如办房产证或注册一家公司&#xff0c;有时要同多个部门联系&#xff0c;这时要是有一个综合部门能解决一切手续问题就好了。 软件设计也是这样&#xff0c;当一个系统的功能越来越强&…

最大权闭合子图(最小割模型)

1&#xff0c;定义&#xff1a; 1&#xff0c;最大权闭合子图是最小割的一个模型。即每一个子图中的每一个点&#xff0c;其出边的点也全应该在这个子图中。而所有子图中&#xff0c;其点的权值和最大就是最大权闭合子图。 2&#xff0c;构建该图&#xff0c;我们把所有正权值…

Docker镜像创建及管理(Hub官方仓库使用及私有注册中心搭建)

写在前面 系统环境&#xff1a;centos 7 一、Docker如何创建镜像 镜像的来源有两种&#xff1a; 从镜像仓库下载镜像&#xff1b;自己创建新的镜像。创建分为两种&#xff1a;&#xff08;1&#xff09;基于已有镜像创建&#xff1b;&#xff08;2&#xff09;使用Dockerfi…

【数据治理-03】无规矩不成方圆,聊聊如何建立数据标准

无规矩&#xff0c;不成方圆&#xff01;数据标准&#xff08;Data Standards&#xff09;是保障数据的内外部使用和交换的一致性和准确性的规范性约束&#xff0c;作为数据治理的基石&#xff0c;是绕不开的一项工作&#xff0c;如此重要的活如何干&#xff0c;咱们一起聊聊。…

【数据结构】排序算法

目录 1.理解排序 1.1 排序的概念 1.2 排序的运用场景 1.3 常见的排序算法 2.插入排序算法 2.1 直接插入排序 2.2 希尔排序 3.选择排序算法 3.1 直接选择排序 3.2 堆排序 4.交换排序算法 4.1 冒泡排序 4.2 快速排序 4.2.1 hoare 法 4.2.2 挖坑法 4.2.3 前…

前期软件项目评估偏差,如何有效处理?

1、重新评估制定延期计划 需要对项目进行重新评估&#xff0c;将新的评估方案提交项目干系人会议&#xff0c;开会协商一致后按照新的讨论结果制定计划&#xff0c;并实施执行。 软件项目评估偏差 怎么办&#xff1a;重新评估制定延期计划2、申请加资源 如果项目客户要求严格&a…

用股票交易量查询接口是怎么查询a股全天总成交量的?

用股票交易量查询接口是怎么查询a股全天总成交量的&#xff1f;今天下班就以通达信给大家讲解一下&#xff0c;通常是在K线图的底部状态栏&#xff0c;可以在日线进行查看a股成交量。在市场栏底部的子图中。 有当天成交的数量。成交量是表示一定的时间内已经成交的中的成交数量…

【数据挖掘】期末复习笔记(重点知识)

Data Mining 一、概述 1.1 数据挖掘 VS 机器学习 VS 深度学习 VS 知识发现 知识发现&#xff1a; 知识发现就是在数据中发掘知识&#xff0c;将低层次的原始数据转换为高层次的信息。 数据挖掘&#xff1a; 数据挖掘是用一系列的方法或算法从数据中挖掘有用的信息&#xf…

Android中的MVC、MVP、MVVM架构你清楚不?(附实现代码)

01 架构介绍 先来看一下MVC、MVP、MVVM的架构图。 从这些架构图中&#xff0c;可以看到每种架构都有3个模块以及数据流动方向箭头。 模块 在系统架构中&#xff0c;首先要做的就是把系统整体按照一定的原则划分成模块。 数据流动 模块划分之后&#xff0c;模块之间的通信&…

工程监测多通道振弦模拟信号采集仪VTN的MODBUS 通讯协议

工程监测多通道振弦模拟信号采集仪VTN的MODBUS 通讯协议 在 MODBUS 协议下&#xff0c;所有寄存器被定义为“保持寄存器” &#xff08;详见 MODBUS 通讯协议标准说明&#xff09;&#xff0c; 设备支持基于 MODBUS 协议的多个连续寄存器读取、单个寄存器写入两种指令码&#x…