作用:
输出一段信息
方法一
举例:
输出“hello word”
echo helloword
通过上面的语句可以输出hellowword(结果如下图)
方法二
另外,echo可以用来拼接字符串
echo "hello""word"
输出结果如下图
运行成功。
ps:echo可以输出字符串,也可以输出变量中的值
3.2.2 变量和set命令
变量是什么?
举个例子,我们坐出租车,假如一公里五块钱,坐了三公里要付给司机十五块钱,坐了六公里要付给司机三十块钱,那么在付钱的过程中,一公里五块钱不变,变的是他行进几公里和相应的价钱。而后者则是变量。而行进公里数则是自变量,价格则是因变量。
变量分两种:
- 用户自己定义的,也就是用set定义的
- 系统自动生成的,这种不需要用户set,可以直接使用
变量中包含什么?
两个部分:
变量的名字
变量中保存的值
定义变量的格式:
set 变量名=变量值
ps:
- 这里需要用set标识符来定义变量和赋值 "="号之间的空格格式要求严格,标识符后不要有空格!
- 例如定义一个变量,变量名是name,变量的值是tom,也可以是ailisi,admin
- 再定义一个变量,变量名是age,变量的值 是18,也可以是19,20,21
使用变量的格式
既然我们了解了怎样定义变量,那如何使用呢?
%变量名%
答:通过%echo%变量名进行输出
举个例子
定义变量保存姓名和年龄
set name=tom set age=18 echo %name%今年%age%岁了
我们来看看输出
我们可以看到输出结果是一堆乱码,这是因为有些时候命令提示符无法识别中文,我们就需要在前面增加chcp 65001来使它进行识别
chcp 65001 set name=tom set age=18 echo %name%今年%age%岁了 pause
来看结果
完成
ps:使用变量的时候,需要给变量前后百分号%。
3.2.3关闭/打开回显
回显是什么
其实就是在执行批处理文件的时显示批处理文件中的命令。直接下翻看图更能清晰直观
打开回显
显示批处理文件中的命令。【默认就是打开回显的】
打开回显的命令:
@echo on
(打开回显状态如下图)
关闭回显
不显示处理文件中的命令
关闭回显的命令:@echo off
@echo off
(直接上图)
可以看到少了很多处理文件中的命令,这个就是回显
echo命令的第二种用法
echo message
这个很简单,就是显示后面的信息,这里不做演示
echo message
echo 命令第三种用法:
显示当前回显设置状态,就是显示回显打开或关闭
ps:echo也可以输出文件
3.2.4 查看当前路径
这个工作可以通过内置变量来做
内置变量:
在系统中自动已经定义的变量
%cd%
%cd% 或者 %~dp0
echo %cd% echo %~dp0
直接上图
此为当前bat所处于的文件夹
ps:内置变量并非dos命令,只是恰巧相似!!!!!
补充:
%time%
3.2.5REM
rem注释
注释的内容,就是一个解释信息【注释的内容是不会当做程序来运行】
rem作用
作用1:將脚本中某一行或者多少设置为不执行
作用2:解释脚本中的每行内容是作用
直接上图
rem
命令执行没有输出“HELLO WORD”
执行成功
ps:
- 可以用"::“代替"REM”
- ::可以提高执行速度,但是REM的兼容性更好
- 建议大家用rem注释
3.2.6 pause
作用是将DOS界面暂停关闭来达到中止命令的效果
3.2.7 title
用来设置控制台的标题
直接上图
title ch225 pause
完成!
3.2.8中文乱码解决方案
方法一
使用 chcp 65001 命令行
chcp 65001
前面已经演示过了,不做赘述。
注意事项:
在执行程序的时候,中文的内容必须在 chcp 65001 下面,否则无法解决乱码问题
方法二
将bat文件使用txt编辑,然后另存为时选择 ANSI 编码格式
3.2.9 start
用于调用其他程序,如可执行文件exe
start qq.exe
通过此代码可以打开QQ,演示结果不做展示
ps:
- qq.exe需要和批处理文件在同一个目录中,是为了方便
- 也可以将qq.exe放到任意位置,但是在执行的时候,就必须加上路径
- start在启动的时候,可以启动exe程序,也可以启动bat,rar,xsl等文件格式。
3.2.10 读取dos输入
简单来说就是由后台定义自变量,控制台去定义因变量,例如账户密码,用户输入的不是账户,而是自己的账户名称
作用:
- 与用户交互:用户可以进行输入,系统会进行输出
- 此时需要将用户输入的内容保存成一个变量,这里需要用到set标识符,还有参数/p
set /p
上例子,
创建一个输入姓名和年龄的交互系统
echo "程序开始执行" set /p name=请输入你的姓名 set /p age=请输入你的年龄 echo 你的姓名是:%name% ,你的年龄是:%age% echo "程序执行结束" @echo on pause
成品如下述视频
1709735747297
测试完成。
3.2.11函数
我们通过上面的命令已经可以写一些小程序了,但是很多程序经常会重复使用,如果通过上述指令一条条进行不仅会效率低下,而且还会容易出错,因此,为了提高代码使用率,我们可以通过函数来提高工作效率,减小工作误差。那么什么是函数呢?
什么是函数
- 函数本质就是一段代码
- 通过使用函数,可以实现代码的重复使用,进而可以提高程序的开发效率
(换句话来讲就是给某一段代码进行命名方便进行引用)
定义函数格式
一般来讲函数格式分为三部分
- :函数名
- 函数体
- goto:eof
- 通常函数内容都是以:函数名称开始,以goto:eof结束
举例
(下图为一个函数)
:fun1 echo hello boys pause goto:eof
上图函数的作用是输出hell boys
看结果
因为在程序中单独函数的goto:eof会直接跳转到程序的最后一行导致结束程序,因此我在中间加了一个pause命令用来暂停函数。
函数的调用方法:
我们已经在上述小结中做出了一个函数,那我们应该如何调用呢
调用函数就是
call:函数名 ... goto:eof
话不多说直接演示
call:fun1 goto:eof :fun1 echo hello boys pause goto:eof
来看结果
成功。
那我们将call:fun1下面的goto:eof删除会出现什么情况?
直接上操作
call:fun1 :fun1 echo hello boys pause goto:eof
代码如上图,看结果
可以看到,删除goto:eof函数之后函数会被执行两次这也是函数的一个特点。
因此,在批处理中,函数的位置,通常都是放到程序的末尾,这是因为批处理的函数会被自动执行 但是在其他的编程语言中,函数的位置可以在开头也可以末尾
另外,goto:eof 函数写的位置不一样,效果也不同,这里我们会在goto中专门去做笔记,这里不多阐述。
批处理函数的特点:
- 批处理的函数在定义以后,是会被自动执行的
- 【一定要注意,在各种编程语言,只有批处理的函数会被自动执行,其他的编程语言中的函数,必须 手动调用执行】
- 同样的原因,在批处理中,函数的位置,通常都是放到程序的末尾,这是因为批处理的函数会被自动执行。如果不进行此操作,在重复调用的时候,容易出现函数执行了一次,程序就结束的现象, 但是在其他的编程语言中,函数的位置可以在开头也可以末尾。
举例
call:fun1 :fun1 echo hello boys pause goto:eof call:fun1 pause
看演示结果
可以看出理论上应该调用三次函数的程序但只调用了两次就结束了,因此将函数部分写在最后即可
3.2.12goto
前面已经用了很多次了,goto函数的作用就是用于函数和主程序的跳转,通常写法都是goto:eof
注意:goto:eof写的位置不一样,效果也不相同,
- 如果写在函数中,goto:eof 是用于终止函数运行
- 如果写在主程序中,goto:eof 是用于终止整个程序的运行
举例
call:a call:a call:a pause goto:eof :a echo hello world echo hello world11 goto:eof echo hello world12
看结果
可以看到输出三次a函数,但没有输出word12,这是因为word12上面的goto:eof使当前执行函数结束然后接着上一条调用去执行命令,以此类推到第五行之后主程序函数中的goto:eof命令终止了整个程序的运行,所以没有去显示最后一条命令。
3.2.13 call
用于调用函数,也可以调用别的bat脚本
在函数调用已做解释,这里不做说明
3.2.14 errorlevel
是脚本内置变量,可以检测上一个命令是否执行成功,一般用于进行程序使用
- 如果这个变量的值等于0,表示上面命令执行成功
- 如果这个变量的值不等于0,表示命令执行失败
上实例:
@echo off echo 2 echo %errorlevel% pause
输出结果
当出现0时,则表示上面程序运行成功
来个不是0的案例
@echo off set /p cho= ping %pingcho% >nul echo %errorlevel% pause
我们随便输入字母,
来看结果:
结果是1,证明命令错误,完工!
3.2.15 if判断
我们已经通过上面所表述的命令可以做出一个简易的登陆系统,接下来我们如何去让系统去识别所登陆的用户账号密码是否正确呢,这个时候就要用到if判断了
什么是if判断
顾名思义,就是判断变量值和变量名是否一致,一致的话做出一类操作,不一致的话做出另一类操作,具体语句如下。
if判断类型
第一种:判断数值:
- 判断两个数是否相同
- 判断两个数字的大小
判断数字用的格式
EQU - 等于 NEQ - 不等于
LSS - 小于 LEQ - 小于或等于
GTR - 大于 GEQ - 大于或等于
第二种:判断字符串
判断字符串相同 或者 不相同
判断字符串用的格式
== 等于
判断的格式1:
单分支
if 判断条件 ( 当条件成立的时候执行的代码 )
简单来说就是当条件成立时,执行括号里面的代码,当条件不成立时则不做任何动作。
例子
@echo off chcp65001 set /p age= if %age% GEQ 18 ( echo 已成年 ) pause
我们输入12试试看
显示输出12,
那我们输入19
显示已成年,这就是单分支if函数
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
需要这份系统化资料的朋友,可以点击这里获取
hcp65001
set /p age=
if %age% GEQ 18 (
echo 已成年)
pause我们输入12试试看 ![](https://img-blog.csdnimg.cn/direct/0af9d7aab8204ac5bd4e8548b1981330.png) 显示输出12, 那我们输入19 ![](https://img-blog.csdnimg.cn/direct/da10278a83ed41da9b5d6e6f5e2953f8.png) 显示已成年,这就是单分支if函数
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-AlhFj5Sq-1714740215665)]
[外链图片转存中…(img-sMnsjfxz-1714740215666)]
[外链图片转存中…(img-nXFhEckm-1714740215667)]
[外链图片转存中…(img-tVU7GA2H-1714740215667)]
[外链图片转存中…(img-wa1f8IZP-1714740215668)]
[外链图片转存中…(img-qRzOKe1f-1714740215669)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新