windows bat脚本基础指令详解

news2024/11/15 7:04:27
pause暂停批处理的执行并在屏幕上显示"请按任意键继续…"
echo显示指令,会把需要显示的内容展示出来。
echo off在此语句后所有运行的命令都不显示命令行本身,但是本身的指令是会显示出来的。
@不显示本行命令行
call调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)
start启动单独的“命令提示符”窗口来运行指定程序或命令。
start命令包含有参数,如下:
"title" 指定在“命令提示符”窗口标题栏中显示的标题。
/dpatch 指定启动目录。
/i 将 Cmd.exe 启动环境传送到新的“命令提示符”窗口。
/min 启动新的最小化窗口。
/max 启动新的最大化窗口。
/separate 在单独的内存空间启动 16 位程序。
/shared 在共享的内存空间启动 16 位程序。
/low 以空闲优先级启动应用程序。
/normal 以一般优先级启动应用程序。
/high 以高优先级启动应用程序。
/realtime 以实时优先级启动应用程序。
/abovenormal 以超出常规优先级的方式启动应用程序。
/belownormal 以低出常规优先级的方式启动应用程序。
/wait 启动应用程序,并等待其结束。
/b 启动应用程序时不必打开新的“命令提示符”窗口。除非应用程序启用 CTRL+C,否则将忽略 CTRL+C 操作。使用 CTRL+BREAK 中断应用程序。
如果不加参数,则只开启新的窗口来执行命令。
%0-%9%0是指批处理文件的本身,%1-%9是传入的参数。这个参数是从批处理外传入的。
choice使用此命令可以让用户输入一个字符,从而运行不同的命令。
type显示文本文件的内容
type 文件名 more有事显示的内容过多,想要一行一行显示时调用。
type 文件名 find “关键字”只输出需要查找的关键字
set该指令用来设置变量
在这里插入图片描述

输入/?指令查看指令详情
在这里插入图片描述

/c 添加自己的选项
/n 不显示提示文本
需要注意的是/t和/d需要配合使用。/t倒计时几秒。/d倒计时结束后的默认选项

MDK 符号字解释

KEY        例子                                                                描述

%            PROJECT1.UVPROJX                                  带扩展名的文件名
#            C:\MYPROJECT\PROJECT1.UVPROJX       带扩展名的完整路径和文件名
@           PROJECT1                                                     没有扩展名或路径说明的文件名
$            C:\MYPROJECT\                                            用反斜杠扩展的文件路径名。
!            .\SRC\TEST.C                                    具有当前文件夹扩展名和相对路径规范的文件名
~ 1        123                                                                   当前光标位置的行号
^ 1         51                                                                    当前光标位置的列号

$D            从设备数据库中选择的设备名称。
E            编辑器文件名目前在焦点。
F            根据上下文,这个文件代码返回:在窗口Project中选择的文件。 当前活动的编辑器文件。 当前由构建过程翻译的文件.
H            应用程序HEX文件名 (PROJECT1.H86).
$J           编译器的绝对路径。 编译器基本文件夹列在项目-管理-项目项目-文件夹/扩展- ARMCC文件夹。例如我自己的该参数的输出结果就是D:\kei5\ARM\ARMCC\include
K            开发工具链的绝对根文件夹,不管使用的关键代码是什么
L            链接器输出文件。 通常用于调试的可执行文件(PROJECT1).
$M         CPU mask revision number.
P            当前项目文件名。
$S            当前激活的设备族包的安装文件夹.
X            视觉可执行程序文件(\UV4\UV4. exe)。 适用于Key Code %, #, and @.
$X            目标-目标- XTAL选项中指定的以MHz为单位的XTAL时钟频率。
^X            XTAL时钟频率在千赫指定的目标-目标- XTAL选项。
Y            预处理器符号文件co-arm_<target_name>.h为C文件类型定义。 适用于关键代码#。
Z            预处理器符号文件co-arm_<target_name>.hpp为c++文件类型定义。 适用于关键代码#。

$L           $表示应用的是路径,L表示Output->Name of Executable中设置的名字,即工程的输出名(包含路径)。

@L        @表示引用的是文件名,@L引用工程的输出名字。换句话说就是使用Keil,在Output中设置的文件输出名字。

#L        #表示引用的是本身,#L即工程的输出文件。keil的输出文件是.axf文件。如我自己的该参数的输出结果就是D:\myproject\project\Objects\app.axf

实际fromelf.exe应该也要使用相对路径,所以命令可以改成:

$KARM\ARMCC\bin\fromelf.exe --bin -o "$L@L.bin" "#L"

$K        表示的是MDK的安装路径。
set /p 变量=等待输入的提示字
set /a 变量=公式
if exist 文件名                查看该文件是否存在
if "字符串"=="字符串"           判断两个字符串是否相等。
 if %变量%               if %变量%
可以通过与choice /c指令配合来完成输入数字的判断。
 /i 参数:不区分大小写,更改代码
for					 循环指令。这里需要了解两个关键字%i、%%i   %i这个关键字不能在bat中使用。只能再CMD命令下的for中使用。
for /l ....					该集表示以增量形式从开始到结束的一个数字序列。					

在这里插入图片描述
goto
跳转执行标签
在Bat中有标签一词,跟C语言的函数类似。并且标签必须单独一行,并且以冒号开头。
这里做一个死循环,如下:

符号(&、&&、||、|、>、>>)

&  顺序执行多条命令,而不管命令是否执行成功

&& 顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

|| 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令(即:只有前面命令执行错误时才执行后面命令)

|  管道命令 前一个命令的执行结果输出到后一个命令 如:help | more

>  清除文件中原有的内容后再写入

>>  追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件

延迟环境变量扩展

CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令。然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求。如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时。能识别出这个变量呢?这时我们就可以在变量名字两边加一个%号, 如%name%。当CMD在对读取我们的整行命令进行格式匹配的时候,就会发现name这个字符两边加了%号,就不会把他当作普通字符处理,而是会把他当 作一个变量处理。变量名叫name。然后CMD就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在值,就返回空 值)。再将这个替换好并且匹配的命令执行。这个替换值的过程就叫做变量扩展。说白了就是把变量的名字,用他的值给替换掉后执行。也就是批处理如何识别一 个变量的过程.。

set var=test
echo %var%

此时编译器再读取的时候直接将%var%替换为test。所以显示就显示test。
在看下边这个

for /l %%i in (1,1,5) do (
set var=%%i
echo %var%)

这个在预编译的时候将%var%替换成%%i,但是%%i又不认识是什么,所以程序在运行的时候就会出错。运行结果如下:
在这里插入图片描述
此时就需要使用延迟环境变量扩展,即每条指令在执行之前才将变量进行替换,以保证对变量的任何修改都可以实时生效.。

使用setloacl ENABLEDELAYEDEXPANSION这个命令来启用"延迟环境变量扩展",遇到的变量需要用!变量!进行替换。那上边异常的代码可以修改为:

setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,5) do (
set var=%%i
echo !var!)

exit
退出当前DOS控制台。

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

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

相关文章

Ricardo Milos

目录 一、题目 二、思路 三、payload 四、思考与总结 一、题目 <!-- Challenge --> <form id"ricardo" method"GET"><input name"milos" type"text" class"form-control" placeholder"True" va…

【C++STL详解(十一)】map/set/multimap/multiset的介绍与使用

目录 一、关联式容器 二、键值对 三、set 介绍 简单使用 1.构造 2.相关迭代器 3.容量 4.修改 四、multiset 五、map 介绍 使用 1.定义的方式 2.迭代器相关 3.容量与operator【】(重点) 4.修改 小总结&#xff1a; 六、multimap 一、关联式容器 在CSTL中…

【学习笔记】A2X通信的协议(十三)- 消息功能定义和内容

目录 11 消息功能定义和内容 11.1 概述 11.2 通过PC5信令消息进行的A2X通信 11.2.1 A2X直接链路建立请求 11.2.1.1 消息定义 11.2.1.2 目标用户信息 11.2.1.3 密钥建立信息容器 11.2.1.4 Nonce_1 11.2.1.5 KNRP-sess ID的最高有效位&#xff08;MSB&#xff09; 11.2…

替代 SMR 算法!两步孟德尔随机化方法 TWMR 与 revTWMR 整合xQTL+GWAS数据分析基因表达与疾病的关联

全基因组关联研究&#xff08;GWAS&#xff09;是研究大型队列中基因型与表型关系的重要工具。GWAS的已知局限性主要在于从与致病变异相关的连锁不平衡区域中识别生物学机制&#xff0c;而无法直接获得基因层面的表型关联。为了解决这个问题&#xff0c;基于转录组关联研究&…

C语言——函数专题

1.概念 在C语言中引入函数的概念&#xff0c;有些翻译为子程序。C语言中的函数就是一个完成某项特定任务的一小段代码&#xff0c;这个代码是有特殊的写法和调用方法的。一般我们可以分为两种函数&#xff1a;库函数和自定义函数。 2.库函数 C语言国际标准ANSIC规定了一些常…

Docker 容器运行时如何实现与宿主机的目录挂载

虽然容器启动前挂载目录相对简单,只需要在启动容器的时候通过-v 参数即可轻松实现,但对于已运行的容器进行目录挂载则稍显复杂。本教程将深入讲解如何在不中断容器运行的情况下,为已运行的Docker容器配置目录挂载,实现灵活的数据共享与持久化策略。 一、环境准备 为了本次实…

ffmpeg采用gpu加速增加水印

1.环境需要 系统 windows10 ffmpeg&#xff0c;ffprobe 字体文件 python3以上版本 2.环境配置 从官网上下载ffmpeg版本https://github.com/BtbN/FFmpeg-Builds/releases&#xff0c;这里我用的是这个&#xff0c;解压之后里面包含ffmpeg&#xff0c;ffprobe&#xff0c;f…

使用Kernel Memory进行RAG评估:AI助力企业知识管理新突破

在现代企业知识管理中&#xff0c;随着业务的不断发展和扩展&#xff0c;各种文档和数据呈现爆炸式增长。为了有效且高效地管理这些知识&#xff0c;企业通常会导入大量文档。然而&#xff0c;当涉及到对文档切片质量和回答准确度的判断时&#xff0c;传统的人工方法显得既费时…

复现dom破坏案例和靶场

目录 1.dom型xss平台 第一关 Ma Spaghet !: &#xff08;1&#xff09;&#xff1a;当get参数中存在somebody时&#xff0c;h2回显 &#xff08;2&#xff09;&#xff1a;当get参数中不存在somebody时&#xff0c;h2回显 第二关Jefff&#xff1a; 第三关&#xff1a;Ugan…

【前端面试】挖掘做过的nextJS项目(中)

https://blog.csdn.net/weixin_43342290/article/details/141170360?spm1001.2014.3001.5501文章浏览阅读105次。需求:快速搭建宣传官网1.适应pc、移动端2.基本的路由跳转3.页面渲染优化4.宣传的图片、视频资源的加载优化5.seo优化全栈react web应用、tailwind css原子工具的支…

动态规划篇--代码随想录算法训练营第三十二天|343. 整数拆分,96.不同的二叉搜索树,01背包理论,01背包优化

343. 整数拆分 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 讲解视频&#xff1a; 动态规划&#xff0c;本题关键在于理解递推公式&#xff01;| LeetCode&#xff1a;343. 整数拆分 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k …

c++47 二级指针

二级指针的输入和输出模型 指针的输入&#xff1a;主调函数分配内存 指针输出 &#xff1a;被调用函数分配内存 指针做输入第一种模型 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h>// 二级指针做输…

《计算机组成原理》(第3版)第8章 CPU的结构和功能 复习笔记

第8章 CPU的结构和功能 一、CPU的结构 &#xff08;一&#xff09;CPU的含义 CPU实质包括运算器和控制器两大部分。 对于冯诺依曼结构的计算机而言&#xff0c;一旦程序进入存储器后&#xff0c;就可由计算机自动完成取指令和执行指令的任务&#xff0c;控制器就是专用于完成…

Python爬虫图片:从入门到精通

在数字化时代&#xff0c;图片作为信息传递的重要媒介之一&#xff0c;其获取和处理变得越来越重要。Python作为一种功能强大且易于学习的编程语言&#xff0c;非常适合用来编写爬虫程序&#xff0c;帮助我们自动化地从互联网上获取图片资源。本文将从基础到高级&#xff0c;详…

CTF密码学小结

感觉没啥好总结的啊 基础的永远是RSA、流密码、哈希、对称密码、古典密码那一套&#xff08;密码学上过课都会&#xff09;&#xff0c;其他的就是数论的一些技巧 似乎格密码也很流行&#xff0c;以及一些奇奇怪怪的性质利用也很多 1、random设置种子后随机的性质&#xff1a…

【LiteX】【开发板】【BoChenK7】使用Python开发FPGA【Hello World、LED点灯、Memory测速、替换BIOS】

目录 开发板介绍下载仓库工程设计工程构建构建流程 工程测试Hello WorldLED点灯Memory测速替换BIOS 开发板信息 开发板介绍 手头目前只有一个购买的BoChenK7开发板&#xff0c;后续会用它来进行LiteX FPGA SoC的构建 测试可能会包括&#xff1a; LED&#xff1a;本篇文章 DDR …

【区块链+乡村振兴】“蜜链盟”乡村振兴基层治理数字化平台 | FISCO BCOS应用案例

在国家战略政策推动和新一代信息化发展应用的合力之下&#xff0c;数字乡村是互联网化、信息化和数字化在农业农村经 济社会发展中的表现。为进一步加强乡村基层治理&#xff0c;根据《中共海南省委农村工作领导小组办公室海南省农业农 村厅关于在我省乡村治理中推广运用积分制…

【Docker】Docker Volume(存储卷)

一、什么是存储卷 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着&#xff0c;当我们在容器中的这个目录下写入数据时&#xff0c;容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。 在宿主…

xss-靶场

一、环境地址 XSS Game - Learning XSS Made Simple! | Created by PwnFunction 二、案例复现 案列1——Ma Spaghet&#xff01; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams…

idea2022新建jsp项目并配置Tomcat服务器

1、创建项目 2、添加jdk 步骤如下&#xff0c;然后点击下边的create 创建项目即可 3、点击file 4、选择模块添加web 5、配置tomcat 6、依次点击 7、新建jsp文件 8、成功显示