windows bat脚本学习一(基础指令)

1. pause

暂停批处理的执行,并在屏幕上显示"请按任意键继续…"

在这里插入图片描述


2. echo

显示指令,会把需要显示的内容展示出来。

在这里插入图片描述


3. echo off

在此语句后,所有运行的命令都不显示命令行本身,但是 echo off 本身的指令是会显示出来的。

在这里插入图片描述


4. @

不显示本行命令行。

在这里插入图片描述


5. call

调用另一个批处理文件(如果不用call,而直接调用别的批处理文件,那么执行完那个批处理文件后, 将无法返回当前文件并执行当前文件的后续命令)。

创建另一个脚本 test2.bat 作为测试。

在这里插入图片描述

分情况,

  • 第一种,2号脚本和1号脚本在同一个目录下

在这里插入图片描述

  • 第二种,2号脚本和1号脚本不在同一个目录,并且2号脚本目录包含中文路径。
    在这里插入图片描述
    结果报错。
    这是因为中文路径系统默认识别不了,可以通过软件转编码来完成。这里以notepad++为例。

在这里插入图片描述
转码后保存,再次执行1号脚本。结果为:

在这里插入图片描述

  • 第三种,2号路径中包含了空格。

在这里插入图片描述

使用 call 调用程序,call 语句之后的其他语句依然能够得到执行。

在这里插入图片描述


6. 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 中断应用程序。


  • 如果不加参数,则只开启新的窗口来执行命令
    在这里插入图片描述
  • 如果需要修改新的窗口标题,则使用参数"标题"。

在这里插入图片描述

  • 如果2号脚本路径包含空格,则路径需要加"路径"。

在这里插入图片描述


7. %0-%9

%0 是指批处理文件的本身;%1-%9 是传入的参数。这个参数是从批处理外传入的。

  • 直接点击脚本显示:

在这里插入图片描述

  • 在命令行输入:

首先,在当前路径下,shift + 鼠标右键,点击 打开 powershell 窗口。

在这里插入图片描述
接着在 powershell 输入:

在这里插入图片描述

这里再补充一下扩展知识。

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的安装路径。

10. choice

使用此命令可以让用户输入一个字符,从而运行不同的命令。

输入/?指令查看指令详情

在这里插入图片描述

/c 添加自己的选项

/n 不显示提示文本

需要注意的是/t和/d需要配合使用。/t倒计时几秒。/d倒计时结束后的默认选项。

10秒倒计时结束后显示:

在这里插入图片描述


11. type

显示文本文件的内容。

先创建一个测试文本test.txt:

在这里插入图片描述

调用脚本来显示:

在这里插入图片描述

  • type 文件名 | more

有时显示的内容过多,想要一行一行显示时调用。

在这里插入图片描述

最下行会显示more,任意键会再显示一行。

在这里插入图片描述

  • type 文件名 | find “关键字”

只输出需要查找的关键字。
在这里插入图片描述


12. set

该指令用来设置变量。
在这里插入图片描述

  • 不带参数为设置变量。

例如:
在这里插入图片描述

  • set /p 变量=等待输入的提示字。

例如:

在这里插入图片描述

  • set /a 变量=公式。

例如:
在这里插入图片描述


13. IF

用于判断。

在这里插入图片描述

  • if exist 文件名

查看该文件是否存在。

例如:
在这里插入图片描述

可以写到一行,但是一定要注意空格,否则语法为失败。

在这里插入图片描述
此外,如果换行,必须"括号"为行最后一个字符。否则无法执行


  • if “字符串”==“字符串”

判断两个字符串是否相等。

例如:
在这里插入图片描述

  • if %变量%

可以通过与 set /p 指令配合来完成输入数字的判断。

例如:

在这里插入图片描述

  • 屏幕输入的信息,既可以作为数字,也可以作为字符串。

输入数字的话,获取的值直接就是数字。
在这里插入图片描述

可以将数字放在双引号"" 之内,视为字符串。
在这里插入图片描述

数字与字符串不能混合比较。

在这里插入图片描述

  • 可以通过与 choice /c 指令配合来完成输入数字的判断。
    例如:

在这里插入图片描述

  • 字符串对比

在这里插入图片描述

  • /i 参数:不区分大小写。

在这里插入图片描述


14. for

循环指令。这里需要了解两个关键字 %i%%i

%i 这个关键字不能在bat中使用。只能在CMD命令下的 for 中使用。

例如:在cmd中:for %i in(command1) do command2

%%i 是在 bat 的for中使用的指令。

例如:for %%i in(command1) do command2

for %%i in(command1) do command2 是 for 的语法使用规则。

  1. forindo 是for语句的关键字,它们三个缺一不可;
  2. %%i 是for语句中对形式变量的引用,即使变量 i 在do后的语句中没有参与语句的执行,也是必须出现的;
  3. in 之后,do之前的括号不能省略;
  4. command1表示字符串或变量,command2表示字符串、变量或命令语句;意思为:循环调用command1中的元素作为参数,来参与command2的执行

此外需要注意几点:

  1. for 语句的形式变量 i,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I%%i 会被认为不是同一个变量;形式变量 I 还可以换成其他的字符,但是,为了不与批处理中的 %0~%9 这10个形式变量发生冲突,请不要随意把 %%I 替换为 %%0~%%9 中的任意一个;
  2. in和do之间的 command1 表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔
  3. for 语句依次提取 command1 中的每一个元素,把它的值赋予形式变量 I ,带到do后的 command2 中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取 command1 中的下一个元素,再执行一次 command2,如此循环,直到 command1 中的所有元素都已经被提取完毕,该for语句才宣告执行结束。

在这里插入图片描述

  • for /L …

该集表示以增量形式从开始到结束的一个数字序列。

例如:
在这里插入图片描述

在这里插入图片描述

  • 高级用法

1、搜索当前目录下有哪些文件?

for %%i in (*.*) do echo "%%i"

在这里插入图片描述

2、搜索当前目录下所有的文本文件?

for %%i in (*.txt) do echo "%%i"

在这里插入图片描述


15. goto

跳转执行标签。

在Bat中有标签一词,跟C语言的函数类似。并且标签必须单独一行,并且以冒号开头。

这里做一个死循环,如下:
在这里插入图片描述
这样在每次输入结果后,就会回到起始,重新执行。


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

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

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

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

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

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

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

17. 延迟环境变量扩展

CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令。然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求。如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时。能识别出这个变量呢?

这时我们就可以在变量名字两边加一个%号, 如 %name% 。当CMD在对读取我们的整行命令进行格式匹配的时候,就会发现name这个字符两边加了%号,就不会把他当作普通字符处理,而是会把他当作一个变量处理。变量名叫name。然后CMD就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在值,就返回空 值)。再将这个替换好并且匹配的命令执行。这个替换值的过程就叫做变量扩展。说白了就是把变量的名字,用他的值给替换掉后执行也就是批处理如何识别一 个变量的过程.。

例如:
在这里插入图片描述
此时编译器在读取的时候,直接将 %var% 替换为 test。所以显示就显示test。

在看下边这个:

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

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

在这里插入图片描述


18. exit

退出当前DOS控制台。

例如:

在这里插入图片描述
只有输入pass,程序才会退出。


原文链接:https://blog.csdn.net/qq_26226375/article/details/122882619

更多batch 使用细节,参考:https://www.jb51.net/article/151923.htm

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
f1 显示当前程序或者windows的帮助内容。 f2 当你选中一个文件的话,这意味着“重命名” f3 当你在桌面上的时候是打开“查找:所有文件” 对话框 f10或alt 激活当前程序的菜单栏 windows键或ctrl+esc 打开开始菜单 ctrl+alt+delete 在win9x中打开关闭程序对话框 delete 删除被选择的选择项目,如果是文件,将被放入回收站 shift+delete 删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站 ctrl+n 新建一个新的文件 ctrl+o 打开“打开文件”对话框 ctrl+p 打开“打印”对话框 ctrl+s 保存当前操作的文件 ctrl+x 剪切被选择的项目到剪贴板 ctrl+insert 或 ctrl+c 复制被选择的项目到剪贴板 shift+insert 或 ctrl+v 粘贴剪贴板中哪谌莸降鼻拔恢? alt+backspace 或 ctrl+z 撤销上一步的操作 alt+shift+backspace 重做上一步被撤销的操作 windows键+m 最小化所有被打开的窗口。 windows键+ctrl+m 重新将恢复上一项操作前窗口的大小和位置 windows键+e 打开资源管理器 windows键+f 打开“查找:所有文件”对话框 windows键+r 打开“运行”对话框 windows键+break 打开“系统属性”对话框 windows键+ctrl+f 打开“查找:计算机”对话框 shift+f10或鼠标右击 打开当前活动项目的快捷菜单 shift 在放入cd的时候按下不放,可以跳过自动播放cd。在打开word的时候按下不放,可以跳过自启动的宏 alt+f4 关闭当前应用程序 alt+spacebar 打开程序最左上角的菜单 alt+tab 切换当前程序 alt+esc 切换当前程序 alt+enter 将windows下运行的msdos窗口在窗口和全屏幕状态间切换 print screen 将当前屏幕以图象方式拷贝到剪贴板 alt+print screen 将当前活动程序窗口以图象方式拷贝到剪贴板 ctrl+f4 关闭当前应用程序中的当前文本(如word中) ctrl+f6 切换到当前应用程序中的下一个文本(加shift 可以跳到前一个窗口) 在ie中: alt+right arrow 显示前一页(前进键) alt+left arrow 显示后一页(后退键) ctrl+tab 在页面上的各框架中切换(加shift反向) f5 刷新 ctrl+f5 强行刷新 目的快捷键 激活程序中的菜单栏 f10 执行菜单上相应的命令 alt+菜单上带下划线的字母 关闭多文档界面程序中的当 前窗口 ctrl+ f4 关闭当前窗口或退出程序 alt+ f4 复制 ctrl+ c 剪切 ctrl+ x 删除 delete 显示所选对话框项目的帮助 f1 显示当前窗口的系统菜单 alt+空格键 显示所选项目的快捷菜单 shift+ f10 显示“开始”菜单 ctrl+ esc 显示多文档界面程序的系统 菜单 alt+连字号(-) 粘贴 ctr l+ v 切换到上次使用的窗口或者 按住 alt然后重复按tab, 切换到另一个窗口 alt+ tab 撤消 ctrl+ z 二、使用“windows资源管理器”的快捷键 目的快捷键 如果当前选择展开了,要折 叠或者选择父文件夹左箭头 折叠所选的文件夹 num lock+负号(-) 如果当前选择折叠了,要展开 或者选择第一个子文件夹右箭头 展开当前选择下的所有文件夹 num lock+* 展开所选的文件夹 num lock+加号(+) 在左右窗格间切换 f6 三、使用 windows键 可以使用 microsoft自然键盘或含有 windows徽标键的其他任何兼容键盘的以下快捷键。 目的快捷键 在任务栏上的按钮间循环 windows+ tab 显示“查找:所有文件” windows+ f 显示“查找:计算机” ctrl+ windows+ f 显示“帮助” windows+ f1 显示“运行”命令 windows+ r 显示“开始”菜单 windows 显示“系统属性”对话框 windows+ break 显示“windows资源管理器” windows+ e 最小化或还原所有窗口 windows+ d 撤

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值