平台使用篇 | 批处理(bat)脚本使用教程(二)

news2024/10/6 18:31:39

导读

BAT脚本提供了一种快速且有效的自动化方式,使用户能够更轻松地处理大量的任务,并且可以根据需要自由地调整和修改脚本。本讲简要介绍了批处理技术及其常用命令。本篇教程主要对批处理技术的语言特点和编程思路进行重点讲解。

RflySim平台更多学习资料见:https://doc.rflysim.com

平台使用篇 | 批处理(bat)脚本使用教程(二)

1.help帮助命令

在BAT脚本中,可以使用“help”命令来获取帮助。

用法如下:在命令行窗口中输入“help”,将显示所有可用的Windows命令和相关信息。

若要了解特定命令的详细信息,可以在命令行中输入“命令名称 /?”,例如“DIR /?”将显示有关DIR命令的详细信息。还可以使用“help”命令查找某个功能或主题,例如“help for”将显示与“FOR”循环命令有关的帮助信息。

需要注意的是,某些命令可能不支持/help或/?选项。此外,在BAT文件中,不会显示“help”输出。如果需要在BAT文件中添加帮助,请在脚本中编写相应的文本,并在需要时将其输出到屏幕上。

2.SET命令

在BAT脚本中,SET命令用于定义变量、显示变量值、删除变量等操作。

具体来说,SET命令可以完成如下操作:

(1) 定义新的变量:例如,SET var=value将创建一个名为var的新变量,并将其值设置为"value"。

(2) 显示变量值:例如,ECHO %var%将输出变量var的值。

(3)修改现有变量的值:再次使用SET命令将会覆盖之前设置的变量值。

(4)删除变量:使用SET命令及其参数,例如SET var= 或 SET var=0,可以删除已经定义的变量var。

需要注意的是,SET命令定义的变量如需进行数学运算,需加上'/a'将之后的变量转为ASCII码,例如'SET /a S2=1+1'

3.ECHO打印命令

ECHO命令用于在命令行窗口输出文本。

其基本语法为:ECHO [text] 其中,text为要输出的文本字符串。

下面是一些常见的ECHO命令用法:

(1) 输出文本字符串 ECHO Hello, world! 将输出文本字符串"Hello, world!"。

(2)打印空白行 ECHO. 输出一个空白行。

(3)显示变量值 SET var=value

 ECHO %var% 将显示变量var的值(即"value")。

注意,在BAT脚本中使用ECHO命令时,如果要显示变量值,必须在变量前后加上’%‘。

4.goto 命令

goto命令用于无条件地转移到指定标签处执行代码。

其基本语法如下:goto :label 其中,":label"表示要转到的标签名称,它必须与脚本中已定义的某个标签名称相匹配。

示例:

:begin

ECHO Please put a new disk into driver A

goto begin

注:上述程序会产生死循环

 

5.pause命令

pause命令用于暂停批处理文件的执行,等待用户按下任何键后继续执行。
 

可以使用以下语法:pause

当批处理程序运行到该命令时,程序将停止执行,直到用户按下任意键为止。在用户按下键之前,程序不会继续执行。这通常用于提示用户进行某些操作或者给用户更多时间来阅读屏幕上的信息。

 

6.call 命令

all命令通常用于调用另一个批处理文件或标签(label)。

它的语法如下:

call :labelname

call filename.bat

其中,:labelname 是要调用的标签名,filename.bat是要调用的批处理文件名。当使用call :labelname命令时,它将跳转到当前批处理文件中名为 :labelname 的标签所在的位置,并开始执行该标签以下的代码。当执行完被调用的标签代码后,程序将回到call命令的下一条语句继续执行。而当使用call filename.bat命令时,它会打开并运行指定的 .bat 文件。执行完成后,程序将返回到原始的批处理文件,继续执行该文件中的下一条命令。

运行示例:

call test.bat

call C:\PX4PSP\RflySim3D\RflySim3D.exe

 按任意键后调用RflySim3D窗口

 

7.start 命令

在 BAT脚本中,start 命令用于启动一个新的窗口以运行指定的程序或者文件。

其语法如下:

start ["窗口标题"] [/d 目录] [/i] [/min] [/max] [/separate | /shared] [/low | /normal | /high | /realtime] [/wait] [/b] [程序/文档名] [参数]

其中:"窗口标题":可选参数,用于设置新窗口的标题。/d 目录:可选参数,用于设置新窗口的默认目录。/i:可选参数,表示要求新窗口运行程序时候使用新的进程。/min:可选参数,表示要求新窗口最小化。/max:可选参数,表示要求新窗口最大化。/separate 或 /shared:可选参数,表示启动程序时新进程是否与调用它时的进程共享环境变量等。/low、/normal、/high 和 /realtime:可选参数,表示了新程序的优先级别。/wait:可选参数,表示原始批处理文件将一直等待,直到启动的程序退出。/b:可选参数,表示不等待程序执行完毕就返回。

start 命令非常灵活,并且可以让我们在脚本中启动其他的应用程序和文件,同时允许我们控制新窗口的位置、大小和状态等等。

运行示例:

start test.bat

start C:\PX4PSP\RflySim3D\RflySim3D.exe

 

注:call命令主要用于在当前批处理文件中调用其他批处理文件或函数,并等待其执行结果;

start命令主要用于启动外部程序或脚本,并立即返回到当前批处理文件执行后续命令。

8.copy命令

在BAT脚本中,copy命令用于将一个或多个文件从一个位置复制到另一个位置。

其基本语法如下:

copy 源文件 目标文件

其中,源文件是带有完整路径和文件名的文件,目标文件是指定了复制后文件的路径和名称。可以使用以下参数对copy命令进行进一步配置:/a:表示复制时保留文件的原始属性;/v:比较源和目标文件是否完全相同;/y:复制时不询问是否覆盖目标文件,直接覆盖;/-y:复制时询问是否覆盖目标文件;/z:可在网络上的非NTFS分区上传输文件时继续复制。同时,还可以使用通配符(*)来批量复制文件,例如:copy *.txt C:\backup 这个命令会将当前目录下所有的以 .txt 结尾的文件复制到 C:\backup 目录中。值得注意的是,如果目标文件存在,则copy命令默认情况下会询问是否需要覆盖目标文件,因此可以通过 /y 或 /-y 参数来控制覆盖行为。

将平台里的DLL文件和已建模好的一些三维场景拷贝到CopterSim或者RflySim3D 里都要用 copy 命令

9.if命令

if命令是BAT脚本中的一个条件语句,用于在执行批处理文件时根据不同的条件执行不同的操作。其基本语法如下:

if condition command

其中,condition 是要判断的条件,command 是在条件满足时要执行的命令。

示例:将指定目录下的DLL文件复制到另一个目录中(截取自平台软件在环脚本)

SET PSP_PATH=C:\PX4PSP

SET DLLModel=AircraftMathworks

SET /A DLLModelVal=DLLModel

if %DLLModelVal% NEQ %DLLModel% (

copy /Y "%~dp0"\%DLLModel%.dll %PSP_PATH%\CopterSim\external\model\%DLLModel%.dll)

AircraftMathworks.dll文件不存在于目标文夹%PSP_PATH%\CopterSim\external\model\中时:变量DLLModelVal赋值为0,与DLLModel不等

其中"%~dp0" 为自动读取当前目录下的路径

 

10. for 命令

for命令是BAT脚本中的一个循环语句,可以遍历一组数据并对每个数据执行相同的操作。

其基本语法如下:

for %%variable in (SET) do command [command-parameters]

其中,%%variable是一个占位符,表示在循环过程中被赋予当前迭代的数值;(SET)是要循环的一组数据,可以是文件名、目录名或字符列表;command是需要执行的命令,command-parameters是传递给该命令的参数。

示例:列举出识别到的端口(取自平台硬件在环脚本)

SET PSP_PATH=C:\PX4PSP

for /f "delims=" %%t in ('%PSP_PATH%\CopterSim\GetComList.exe 0') do SET ComNameList=%%t

ECHO %ComNameList%

插入飞控后可识别端口号

 

11.SET命令

choice命令是一个用于在bat脚本中提供菜单交互式选择的命令。它可以用于让用户从指定的一组选项中选择一个,并将选择结果返回给批处理程序。

ECHO 1. dir

ECHO 2. ping

ECHO 3. netstat

SET /p command=请输入数字:

if %command%==1 (  

dir

 ) else if %command%==2 (  

ping www.baidu.com 

) else if %command%==3 (  

netstat -ano

) else (  

ECHO 无效的输入 

 

12.tasklist命令

tasklist命令允许用户查看当前正在运行的进程列表并了解与每个进程相关联的信息,如进程ID、内存占用等等。

tasklist命令的基本语法如下:

tasklist [/s computer] [/u domain\user /p password] [/m [module] | /svc | /v] [/fi filter] [/fo format] [/nh]

其中,/s 参数用于指定要查询任务列表的远程计算机;/u 和 /p 参数用于指定用于连接到远程计算机的用户凭据;/m module 参数允许您过滤显示进程和其模块的映像名称;/svc 参数会显示每个服务名、显示名称以及组件名称或DLL名称的进程;/v 参数会显示更详细的输出信息;/fo 参数允许您指定要生成的输出格式,默认为表格格式;/nh 参数允许您省略表头。

示例:

tasklist //显示当前所有进程

tasklist|find /i "RflySim3D.exe" && taskkill /im "RflySim3D.exe" start C:\PX4PSP\RflySim3D\RflySim3D.exe//找到并重启RflySim3D.

其中,find 命令用于在输出结果中搜索特定的字符串,并将包含该字符串的行输出到标准输出。

 

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

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

相关文章

Flutter-Drawer使用

drawer Drawer是Android开发中Material风格常用的设计,就是我们常说的“抽屉”效果,一个从侧边栏拉出来的导航面板。 在Flutter使用Material风格,最为常用的组件之一就是Scaffold了;Scaffold的drawer属性是一个Widget类型的组件&…

Red Hat重置root密码

目录 前言 1、使用rd.break参数重置root密码 2、使用安装盘重置root密码 前言 我们有时会忘记linux系统的root密码,有的不会重置密码只能重置系统了,下面介绍两种重置root密码的方法 1、使用rd.break参数重置root密码 1、启动系统,并在…

将有序数组转换为二叉树

md这个破CSDN模板怎么没了,编辑器也死难用,气死 1、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不…

如何免费使用ChatGPT,提高开发效率?以开发者的角度ChatGPT能做什么?

一、如何免费使用ChatGPT 1)登录openai官网https://openai.com/,注册账号后获取免费体验;但目前已经很难成功注册openai账号了,需要魔法上网的同时代理不能使用香港、俄罗斯等地区,需要国外邮箱和国外手机号&#xff…

企业用友NC软件被locked勒索病毒攻击,如何恢复nchome配置文件

近日,用友NC系统遭受了一次严重的勒索病毒攻击,导致许多企业的数据和配置文件被锁定。其中,NC Home配置文件也受到了影响,给企业带来了不小的损失。那么,在这种情况下,如何恢复NC Home配置文件呢&#xff1…

一个动作,直接盘活死仓库!实现效益增长200%!(附完整模板)

有人说:看一家工厂管理到不到位,看下他的仓库就知道了。 仓库作为企业存储和保管物料的重要场所,其管理的好坏直接影响着企业的生产与销售环节! 我拜访过很多制造型企业,他们的仓库或多或少都存在以下问题—— 物料…

Hadoop的HDFS文件系统

Hadoop的HDFS文件系统 概述 Hadoop的HDFS文件系统是一种分布式文件系统,hadoop的核心组件之一。它的设计目标是能够在普通硬件上运行,并且能够处理大量的数据。HDFS采用了主从(Master/Slave)架构,其中有一个NameNode…

Adobe打印转PDF字体出错问题解决方案

错误现象 通过adobe pdf打印转换pdf时,不能够转换成功,只能弹出一个**.txt 打印——选择Adobe pdf——打印,txt中的内容如下: %%[ ProductName: Distiller ]%% %%[ Error: TT8E96441DtCID cannot be embedded because of licensi…

2023年美国大学生数学建模竞赛D题联合国可持续发展目标的优先次序解题全过程文档及程序

2023年美国大学生数学建模竞赛 D题 联合国可持续发展目标的优先次序 原题再现: 背景   联合国(UN)制定了17 项可持续发展目标(SDGs)。实现这些目标将最终改善世界各地许多人的 生活。这些目标不是相互独立的。因此,在某些目标上的积极收获通常会对其…

FM33A048B CRC

概述 循环冗余校验(Cyclic Redundancy Check,CRC)是最为常用的计算机和仪表数据通信的校验方法,FM33A048B中CRC计算单元为完全独立模块,通过软件控制可进行7816、I2C、UART和SPI模块有串行数据流接口的收发CRC计算和校验,也可进行…

二、搭建Kubernetes集群---2.1 搭建Kubernetes环境平台规划和部署方式介绍

二、搭建Kubernetes集群 2.1 搭建Kubernetes环境平台规划和部署方式介绍 2.1.1 搭建Kubernetes环境平台规划 如何安排Master、node。我们已经知道Kubernetes架构的组件共有两大部分,Master和node,因此这里的搭建我们可以分为两个部分,单Ma…

Vue3 + vite npm run build 后 html文件的srcipt标签不加type=module属性的js文件没有被打包

引言 :最近开发一个公司的官网项目,由于公司没有 UE, 领导就直接找了一个JQuery bootstrap 的项目模板要求在最快的时间里面把这个项目放到Vue框架里面。这个项目模板里面各种动画、图表都是引入的JQery插件,这就导致了&#xff…

vue通过缓存请求数据提高首界面展示效率

我在组件中编写了这样一段代码 <template><div class "appp"><button click "getUser">请求数据</button></div> </template><script> import axios from "axios"; export default {data() {retur…

SQL Tips汇集及常见问题

SQL Tips汇集及常见问题 表与数据 -- 创建并初始化部门表DROP TABLE IF EXISTS dept; CREATE TABLE dept (deptno int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 部门编号,dname varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMM…

蓝桥杯青少组python:第十三届省赛第二场

选择题 1、十进制 55 55 55转换为十六进制是() A、 1101111 1101111 1101111 B、 313 313 313 C、 37 37 37 D、 67 67 67 2、下列关于函数的说法正确是&#xff08;&#xff09; A、函数的定义必须的程序的开头 B、函数定义后&#xff0c;其中的程序就可以自动运行 C、函数定…

如何让技术架构师具有预知未来业务发展的能力

大家好&#xff0c;今天我们来分享业务架构&#xff0c;但是我们并不是以产品经理角度讲述一个业务架构是什么以及如何做&#xff1f;而是以一个技术架构师的角度&#xff0c;讲述如何承接业务架构或在没有业务架构的时候&#xff0c;如何判断业务变化趋势而对系统架构提前做出…

【Linux】2.4 使用 git 命令行

git git —— 一个版本管理的工具。 &#xff08;gitee/github 底层都是git&#xff0c;只是不同的网页化的结果&#xff09; 有否&#xff1f;&#xff1a;查看是否有git——git --version [RoundBottleVM-12-2-centos ~]$ git --version git version 1.8.3.1安装&#xff…

排查java进程被linux杀掉

1、查找进程 通过jps -l查找相关的进程发现进程已经不存在 2、查看服务日志 查看服务日志后&#xff0c;发现凌晨4点53并未产生相关的错误日志导致程序出现OOM&#xff0c;此时进行进一步分析&#xff0c;是否是linux杀掉了进程 3、查看linux系统日志 通过less /var/logs/me…

超越大数据的边界:Apache Flink实战解析【上进小菜猪大数据系列】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。欢迎订阅专栏 Apache Flink是一种快速、可靠、可扩展的开源流处理框架&#xff0c;被广泛应用于大数据领域。本文将介绍Apache Flink的实战运用&#xff0c;包括其核心概念、架构设…

Redis学习---04

一、Redis.conf配置文件 (1) units&#xff1a;对于大小写不敏感 导入 绑定ip和端口&#xff1a; (2) 通用&#xff1a; 以守护进程开启&#xff0c;默认为no 进程文件&#xff1a; 日志&#xff1a; 数据库的数量&#xff1a;是16个 是否显示logo&#xff1a; (3) 快照&…