windows bat脚本学习一(基础指令) |
您所在的位置:网站首页 › Bat操作浏览器页面 › windows bat脚本学习一(基础指令) |
1. pause
暂停批处理的执行,并在屏幕上显示"请按任意键继续…" 显示指令,会把需要显示的内容展示出来。 在此语句后,所有运行的命令都不显示命令行本身,但是 echo off 本身的指令是会显示出来的。 不显示本行命令行。 调用另一个批处理文件(如果不用call,而直接调用别的批处理文件,那么执行完那个批处理文件后, 将无法返回当前文件并执行当前文件的后续命令)。 创建另一个脚本 test2.bat 作为测试。 分情况, 第一种,2号脚本和1号脚本在同一个目录下![]()
使用 call 调用程序,call 语句之后的其他语句依然能够得到执行。 ![]() %0 是指批处理文件的本身;%1-%9 是传入的参数。这个参数是从批处理外传入的。 直接点击脚本显示:首先,在当前路径下,shift + 鼠标右键,点击 打开 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_.h为C文件类型定义。 适用于关键代码#。 Z 预处理器符号文件co-arm_.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 "[email protected]" "#L" $K 表示的是MDK的安装路径。 10. choice使用此命令可以让用户输入一个字符,从而运行不同的命令。 输入/?指令查看指令详情 /c 添加自己的选项 /n 不显示提示文本 需要注意的是/t和/d需要配合使用。/t倒计时几秒。/d倒计时结束后的默认选项。 10秒倒计时结束后显示: 显示文本文件的内容。 先创建一个测试文本test.txt: 调用脚本来显示: 有时显示的内容过多,想要一行一行显示时调用。 最下行会显示more,任意键会再显示一行。 只输出需要查找的关键字。 该指令用来设置变量。 例如: 例如: 例如: 用于判断。 查看该文件是否存在。 例如: 可以写到一行,但是一定要注意空格,否则语法为失败。
判断两个字符串是否相等。 例如: 可以通过与 set /p 指令配合来完成输入数字的判断。 例如: 输入数字的话,获取的值直接就是数字。 可以将数字放在双引号"" 之内,视为字符串。 数字与字符串不能混合比较。 循环指令。这里需要了解两个关键字 %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 的语法使用规则。 for、in 和 do 是for语句的关键字,它们三个缺一不可;%%i 是for语句中对形式变量的引用,即使变量 i 在do后的语句中没有参与语句的执行,也是必须出现的;in 之后,do之前的括号不能省略;command1表示字符串或变量,command2表示字符串、变量或命令语句;意思为:循环调用command1中的元素作为参数,来参与command2的执行。此外需要注意几点: for 语句的形式变量 i,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I 和 %%i 会被认为不是同一个变量;形式变量 I 还可以换成其他的字符,但是,为了不与批处理中的 %0~%9 这10个形式变量发生冲突,请不要随意把 %%I 替换为 %%0~%%9 中的任意一个;in和do之间的 command1 表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;for 语句依次提取 command1 中的每一个元素,把它的值赋予形式变量 I ,带到do后的 command2 中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取 command1 中的下一个元素,再执行一次 command2,如此循环,直到 command1 中的所有元素都已经被提取完毕,该for语句才宣告执行结束。该集表示以增量形式从开始到结束的一个数字序列。 例如: 1、搜索当前目录下有哪些文件? for %%i in (*.*) do echo "%%i"2、搜索当前目录下所有的文本文件? for %%i in (*.txt) do echo "%%i"跳转执行标签。 在Bat中有标签一词,跟C语言的函数类似。并且标签必须单独一行,并且以冒号开头。 这里做一个死循环,如下: CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令。然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求。如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时。能识别出这个变量呢? 这时我们就可以在变量名字两边加一个%号, 如 %name% 。当CMD在对读取我们的整行命令进行格式匹配的时候,就会发现name这个字符两边加了%号,就不会把他当作普通字符处理,而是会把他当作一个变量处理。变量名叫name。然后CMD就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在值,就返回空 值)。再将这个替换好并且匹配的命令执行。这个替换值的过程就叫做变量扩展。说白了就是把变量的名字,用他的值给替换掉后执行。也就是批处理如何识别一 个变量的过程.。 例如: 在看下边这个: 这个在预编译的时候将%var%替换成%%i,但是%%i又不认识是什么,所以程序在运行的时候就会出错。运行结果如下: 使用 setloacl ENABLEDELAYEDEXPANSION 这个命令来启用 “延迟环境变量扩展” ,遇到的变量需要用!变量!进行替换。那上边异常的代码可以修改为: 退出当前DOS控制台。 例如:
原文链接:https://blog.csdn.net/qq_26226375/article/details/122882619 更多batch 使用细节,参考:https://www.jb51.net/article/151923.htm |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |