常用的bat批处理脚本大全(精选)
发布日期:2025-01-04 11:02 点击次数:131
前言
在windows上编程或者制作一些小工具,少不了使用批处理脚本,而且在各种开发环境搭建中我们经常会看到批处理脚本。批处理脚本以cmd命令为基础,增加一些变量和参数构造多命令来完成复杂的任务。
1、echo
echo就是跟所有语言相似的输出打印命令,一般我们会在前面加上@前缀,表示不会显示打印语句。
我们也会调用@echo off关闭显示打印信息,这样后面的所有echo就不用加@前缀来隐藏命令。
在这个示例中,第一次没有设置@echo off,运行脚本,回显了echo hello,但是当运行echo world的时候,它没有回显,因为已经关闭了回显。
echo表示输出,那么输入怎么办?这里要借助一个小技巧set /p
运行:
echo还可以结合>与>>命令向文件中写入和追加内容。
其实这个示例里面隐含了一个操作,就是如果hello.txt文件不存在就创建,存在就覆盖或者追加。在linux下,我们新建一个文件可以使用touch命令,在windows命令行下,创建文件可以使用echo > xxx.txt 就可以了。
值得一提的是,因为cmd命令行默认编码是ANSI(936),而批处理脚本默认编码是UTF8(65001),所以在bat文件中使用echo输出中文会乱码。解决办法:要么改变cmd编码,要么改变脚本编码为ANSI。
改变脚本编码,可以在notepad++里面直接使用 "编码" 菜单项:转为 ANSI 编码 修改,再一个办法就是通过记事本打开脚本,然后“另存为”的时候选择编码 ANSI,如下所示:
2、注释
任何语言都有注释,批处理脚本语言也不例外,它的注释,就是使用关键字REM,一般带上@前缀。
在这个图中,可以看到,当使用REM关键字的时候,这一行内容就已经变为绿色高亮,明显与可以执行的语句有区别。
3、常见cmd命令
windows命令行功能描述linux终端cd切换工作目录cddir列出当前文件夹下所有文件ls [-lh]type查看文件内容catmd/mkdir创建目录mkdirdel删除文件rmrd删除目录rm -rcopy/xcopy拷贝cp [-r]cls清屏clearfindstr根据关键字查找grepmove/rename移动/重命名mv/renametasklist查找进程ps [-ef]taskkill 杀死进程kill [-9]
4、参数与变量
在执行脚本的时候,我们可以在脚本后面跟上一些参数,这些参数我们在脚本中通过%1、%2、%3、%4依此类推类获取。
运行脚本,打印如下:
C:\Users\buejee\Desktop\battutorial>bat_params.bat hello world 3 4first param is hellosecond param is worldthird param is 3fourth param is 4
bat脚本参数只能表示%1~%9,也就是最多可以表示出9个参数。
从这个脚本显示的样子可以看出,当表示的时候,其实已经无法表示了,只是表示%1后面拼接了一个0,所以第十个参数是10,第十一个参数是11,第十二个参数是12。
C:\Users\buejee\Desktop\battutorial>bat_params.bat 1 2 3 4 5 6 7 8 9 9 9 9first param is 1second param is 2third param is 3fourth param is 4fifth param is 5sixth param is 6seventh param is 7eighth param is 8ninth param is 9tenth param is 10eleventh param is 11twelfth param is 12
解决办法就是需要将前面的参数弹出。使用shift /1
代码:
运行结果:
C:\Users\buejee\Desktop\battutorial>bat_params.bat 1 2 3 4 5 6 7 8 9 100 101 199first param is 1second param is 2third param is 3fourth param is 4fifth param is 5sixth param is 6seventh param is 7eighth param is 8ninth param is 9tenth param is 100eleventh param is 101twelfth param is 199
变量赋值与取值:
变量赋值语句使用“=”,且“=”两边没有空格。 取值的时候使用%%包裹,这个跟我们在命令行下打印系统环境变量的值一样:echo %JAVA_HOME%
在bat脚本中,for循环的变量,我们需要使用两个%%来表示,在cmd命令行下,可以使用一个%表示:
bat_variable_in_forloop.bat
运行:
以上这些都是自定义变量,还有一些系统内置的变量,可以方便我们在脚本中使用: