导航参见:
【bat脚本】一文带你玩转bat脚本命令到自动化应用
【shell脚本】一文带你打通关shell脚本命令到自动化应用
一、背景最近,作者在日常办公开发中遇到了一个问题,办公中需要打开各种网页,而为了避免忘记网站地址,于是乎就用浏览器将其收藏的密密麻麻,尽管通过分类及重命名网址等方法降低费力度,但每次从中找到并打开常用的网址还是依旧费劲。而为了解决这个问题,于是作者就想自己简单写个脚本,而考虑到日常办公中又都是用的Windows系统,因此就直接采取了写bat脚本的方式。在阅读了一些相关资料和书籍,并且加上了自己的总结和理解之后,最终的最终,形成了此篇文章。在这里,作者也衷心地希望此篇文章能对您有所帮助或有所启发,能够帮助您解决可能会遇到的一些问题。
二、bat基础知识 2.1 bat脚本的概念Bat脚本是指批处理脚本(Batch Script),也可以简称为批处理或批处理文件。批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为.bat或者.cmd。这些命令统称批处理命令,它是一种运行在Windows操作系统上的脚本文件,可以用于执行多个命令或操作的批处理任务。
Bat脚最初用于自动化和批量处理任务,在过去常用于运行一系列命令、复制、移动和删除文件、创建或删除文件夹等日常操作。Bat脚本中每一行都是一条DOS命令,我们可以使用任何文本文件编辑工具创建和修改。要想运行Bat脚本,我们可以直接双击,或者在命令提示下键入批处理文件的名称,系统就会调用Cmd.exe来运行该文件。
Bat脚本通常被用于简化、自动化重复性任务的执行,提高工作效率,减少人工操作。它在日常管理、系统配置、软件安装、数据处理等方面发挥重要作用。Bat脚本的学习和掌握可以帮助用户更好地利用Windows操作系统的强大功能和灵活性。
2.2 bat脚本的创建与编辑在 Windows 系统中,我们可以使用任何文本编辑器来创建和编辑 Bat 脚本文件,或者在Vscode和IDEA中创建和编辑文件。以下是创建和编辑 Bat 脚本文件的步骤:
①打开一个文本编辑器,例如txt、Notepad++和sublime_txt等。
②在文本编辑器中新建一个空白文件。
③输入 Bat 脚本的命令和指令。其中Bat 脚本的语法和命令语句请参考Bat脚本的官方文档或者本文的第三章。
④输入完命令和指令后,可以保存文件。请确保选择正确的文件类型和文件名扩展名(.bat)。
⑤选择文件菜单中的"保存"选项或使用快捷键 Ctrl + S。
⑥在保存对话框中,选择我们要保存的位置和文件名,并确保文件名的后缀加上扩展名".bat",例如"test.bat"。
2.3 bat脚本的执行要运行一个 Bat 脚本文件,我们可以按照以下步骤进行:
①打开命令提示符(Command Prompt)窗口,如果是不利用ide环境,我们可以在开始菜单中搜索"命令提示符"或"cmd"来找到,如果利用ide环境,我们可以直接在IDEA或者Vscode的terminal中从Windows PowerShell切换到Command Prompt。

②在命令提示符中,使用 cd 命令切换到包含 Bat 脚本文件的目录。例如,如果脚本文件位于 “D:\test” 目录下,可以输入 cd D:\test 来切换到该目录。
③如果想跨目录使用Bat脚本,我们则需要在环境变量窗口里的系统变量中的path变量中配置Bat脚本所在的目录。(按下“win+R”快捷键,打开运行对话框,输入指令:sysdm.cpl,即可快速打开系统属性窗口。)

③输入 Bat 脚本文件的名称,包括文件扩展名 “.bat”。例如,如果脚本文件名为 “script.bat”,则输入 script即可运行bat脚本。
④按下 Enter 键,命令提示符将执行并运行 Bat 脚本文件。脚本中的命令将按顺序执行。
三、bat常用语法命令 3.1 基本内部命令 3.1.1 REM 和 :: 🌱::作用:只能出现在每一行的开头,其后的内容被当作注释 🌱REM作用:可用于任何位置,其后的内容被当作是注释 3.1.2 ECHO 和 @ 🌱echo作用1:文本消息输出到命令行窗口或文件中。 作用2:打开回显或关闭回显功能。 例如:在命令行窗口中输出 “Hello, World!” echo "Hello, World!" 注意:如果想要打印中文且出现乱码,则需要修改文档编码,通过chcp指令可以修改,chcp 65001可以修改文档编码为utf-8 chcp 65001 echo "你好!" 例如:开启或关闭命令的回显 echo [on|off] 如果想关闭“echo off”命令行自身的显示,则需要在该命令行前加上“@”。 @echo off 3.1.3 PAUSE 🌱pause作用:暂停批处理的执行并在屏幕上显示"请按任意键继续..." 3.1.4 SET 🌱set作用:定义变量,包括数字、字符串及数组。 例如:定义数字变量 set /a n=0 例如:定义字符串变量 set s1=hellworld set s2="Hello World" 如果想要使用字符串变量s2,则可以用%符号来引用变量的值,例如,在Echo命令中可以这样使用变量: echo %s2% 例如:定义数组变量 set arr=1 2 3 4 5 6 ❗注意事项: 变量名区分大小写。 变量名由字母、数字和下划线组成,不能使用空格或特殊字符。 变量值可以包含任何文本或数字。 变量值可以是一个变量的引用。 可以将多个变量设置在一行上,使用&符号分隔。 使用%时,在Bat脚本中,如果要在文本中显示%字符本身,需要使用%%来转义 1.字符串连接 set str1=Hello set str2=World set result=%str1% %str2% echo %result% 这将输出 Hello World。在批处理中,可以使用 % 符号来引用变量,并使用空格将字符串连接起来。 2.字符串截取 set myvar=abcdef set substring=%myvar:~0,3% echo %substring% 这将输出 abc。:~ 后跟的是截取的起始索引和长度。在这个例子中,0,3 表示从索引 0 开始截取,长度为 3。 3.字符串查找 set myvar=abcdef echo %myvar:~2% 这将输出 cdef。如果省略长度,则从指定的索引开始一直截取到字符串末尾。 4.字符串替换 set myvar=abc123abc set newvar=%myvar:abc=xyz% echo %newvar% 3.1.5 ERRORLEVEL 🌱errorlevel作用:获取程序返回码 echo %errorlevel% 每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码。⽤于判断刚才的命令是否执⾏成功,默认值为0,⼀般命令执⾏出错会设 errorlevel 为1。 3.1.6 TITLE 🌱title的作用:设置默认控制台的前景色和背景色,语法如下: 例如:请把cmd窗口的标题改为“我的窗口” title "我的窗口" 3.1.7 COLOR 🌱color的作用:设置cmd窗口的标题,语法如下: color [背景色][前景色] 颜⾊属性由两个⼗六进制数字指定 – 第⼀个为背景色,第⼆个则为前景色。每个数字可以为以下任何值之⼀。 例如:请把cmd窗口的背景色改为黑色,前景色改为绿色 color 02 进制数0123456789ABCDEF在本章节里,我将给大家介绍一些bat的应用案例,加深大家对bat相关知识的了解。这些应用案例中的脚本编写将会或多或少的直接应用到第三章中介绍的常用语法命令,然后案例整个的实现也会运用到第二章中介绍的bat脚本的创建、编辑、执行的相关知识,大家如果有遗忘,就直接回顾第二、三章即可。
4.1 命令行快速打开网站这个应用案例其实在公司开发时非常实用,如果团队里负责的应用比较多,而不同应用会有不同的仓库地址、不同的es地址乃至一些监控地址,如果我们每次去找浏览器中找各个应用对应的网站地址(或者收藏夹里直接寻找打开),其实都还是有一点麻烦的,而要解决这个问题,我们只需要简单地编写bat脚本就可以,然后在idea的命令窗口敲下一行简易命令,就可以直接打开我们想要找的网站地址。
那么底下脚本里我是以抖音和淘宝网站地址举例,那么读者大大可以换上自己想要打开的网页地址,构建自己需要的映射关系。
@echo off setlocal enabledelayedexpasion set easy_id=%1 REM 构建easy_id与对应网站地址的映射关系 set "websites[7k7k]=https://www.7k7k.com" set "websites[4399]=https://www.4399.com" set "websites[dy]=https://www.douyin.com" set "websites[tx]=https://v.qq.com/?from=qqnews" set "websites[tb]=https://www.taobao.com/?spm=a21n57.sem.logo.1.25433903Ckm5RO" REM 检查easy_id是否存在于关联数组中 if defined websites[%easy_id%] ( start "" "!websites[%easy_id%]!" ) else ( echo Invalid easy_id )我们只需要把上述脚本保存后改个简单的名称,如easy.bat(如果要跨目录使用,我们则需要在环境变量中配置)然后在IDEA中的Terminal切换成Command Prompt,然后运行easy dy,即可直接打开dy的网站。如果我们在平常开发时,我们可以配置一下应用号和es看板的地址,然后直接输入es 7455,则直接打开7455应用所对应的es地址,这样就是不是非常方便啦!
4.2 微信应用多开这个案例其实非常实用,不管是工作还是生活,如果大家需要开多个微信的话,就可以应用到如下案例,这个脚本案例中代码其实很少,比较简单,主要是一些操作点。
① 找到已有微信的安装目录:直接右击桌面图标打开其所在目录
②在其目录下新建doubleWeChat.bat,脚本代码如下:
:: 下面目录可以替换为自己微信的安装目录 start C:"\Program Files\Tencent\WeChat\"WeChat.exe start C:"\Program Files\Tencent\WeChat\"WeChat.exe③右击doubleWeChat脚本,发送到桌面快捷方式
④右击桌面上的快捷方式修改其图标,最后doubleWeChat也会跟原生微信的图标一样

⑤双击桌面上的doubleWeChat图标,即可跳出两个微信登陆弹窗(由于不能发布微信截取图,这里就大家自己尝试即可。此外,如果想登更多微信,只需修改上面命令行数即可)
⑥如果是在登录一个微信的时候运行“doubleWeChat”会显示当前已登录微信的主界面,而不是打开两个微信登录窗口,在这里提供一个方法,原理就是先关闭正在运行的微信程序,然后重新打开两个微信,代码如下:
taskkill /F /FI "IMAGENAME eq WeChat.exe" start C:"\Program Files\Tencent\WeChat\"WeChat.exe start C:"\Program Files\Tencent\WeChat\"WeChat.exe 4.3 猜数字整蛊小游戏这个案例其实可以结合开机自动启动和关机的脚本做出一个整蛊游戏,可以预设一个随机整数,然后让用户去猜,如果猜的次数达到一定次数,则让其电脑自动关机。当然,下面这个案例只是简单的实现了猜个1-100之间的数字,如果想结合开机自启则还需要稍加修改。
@echo off setlocal enabledelayedexpansion :: 提示玩家输入猜测的数字 chcp 65001 > nul title 猜数字游戏 :: 生成一个1到100之间的随机数 :: set /a secretNumber=%random% %% 100 + 1 set /a secretNumber=7 :: 初始化猜测次数 set /a guessCount=0 echo 请猜一个1到100之间的数字: :guessLoop if !guessCount! gtr 0 ( set /p guess=请继续输入你的猜测: ) else ( set /p guess=请输入你的猜测: ) :: 增加猜测次数 set /a guessCount+=1 :: 检查输入是否为数字 for /f "delims=0123456789" %%i in ("%guess%") do ( echo 输入无效,请输入一个数字! pause goto guessLoop ) :: 比较猜测的数字和秘密数字 if !guess! lss %secretNumber% ( echo 太低了! 再试一次. ) else if %guess% gtr %secretNumber% ( echo 太高了! 再试一次. ) else ( :: 猜对了 echo 恭喜你!你猜对了数字 %secretNumber% echo 你总共猜了 %guessCount% 次. pause exit /b ) :: 继续循环 goto guessLoop 4.4 批量修改文件名批量修改指定文件夹中的文件名称。
@echo off setlocal enabledelayedexpansion rem 设置文件所在目录路径 set "folderPath=C:\YourFolderPath" rem 进入目标目录 cd %folderPath% rem 循环处理每个文件 for %%F in (*) do ( rem 获取文件名(带扩展名) set "fileName=%%F" rem 移除字母部分,保留数字 set "newFileName=" for /L %%I in (0, 1, 9) do ( set "newFileName=!newFileName!!fileName:%%I=!" ) rem 重命名文件 ren "%%F" "!newFileName!" ) endlocal 4.5 搜索文件夹搜索当前目录是否存在以指定字符串结尾的文件夹。
@echo off setlocal enabledelayedexpansion set "str=202412" REM 替换为您要搜索的字符串 set /a length=6 echo 搜索到以下文件夹: for /d %%i in (*) do ( set "folder_name=%%i" set "last_characters=!folder_name:~-%length%!" REM 将“长度”替换为您要检查的字符串的长度 if "!last_characters!" == "%str%" ( echo "!folder_name!" ) ) endlocal pause 4.6 倒计时如果我们想实现一个1分钟后电脑自动关机的脚本,那么我们就需要用到倒计时脚本功能。如下介绍一个简单的倒计时脚本,倒计时5秒钟,如果大家有其他需要,只需要在此基础上稍加修改就可以。
@echo off setlocal enabledelayedexpansion title test REM 设置代码页 chcp 65001 > nul REM 设置倒计时的总秒数 set /a count=5 :countdown rem 清屏 cls REM 显示当前剩余的时间 chcp 65001 > nul echo 倒计时剩余:%count% 秒 REM 递减秒数 set /a count-=1 REM 如果倒计时没有结束,则等待1秒后继续 if %count% GEQ 0 ( ping -n 2 127.0.0.1 > nul goto countdown ) REM 倒计时结束后的消息 chcp 65001 > nul echo 倒计时结束! endlocal pause 4.7 进度条这个应用案例其实也非常实用,我们在Linux或者Windows系统中下载文件时经常会遇到一种情况,就是看见命令行中显示文件下载的进度条,那么这个进度条的展示是怎么实现的呢?其就可以用bat脚本来实现,实现的代码如下:
@echo off setlocal enabledelayedexpansion REM 示例使用 set "length=50" set "total=100" set "current=0" :loop REM 模拟处理的时间 timeout /t 1 /nobreak >nul REM 更新步骤数 set /a "current+=1" REM 调用进度条显示函数 call :show_progress %length% %total% %current% REM 检查是否完成 if %current% lss %total% goto loop echo Done! pause exit ::-------------------------------------------------------------------------------- REM 封装进度条显示函数 :show_progress setlocal set "length=%1" set "total=%2" set /a "current=%3" REM 计算进度 set /a "progress=current*length/total" REM 创建进度条 set "bar=" for /l %%A in (1,1,%progress%) do set "bar=!bar!#" set "spaces=" for /l %%A in (%progress%,1,%length%) do set "spaces=!spaces! " REM 显示进度条 cls echo Progress: !bar!!spaces! %current%%% endlocal & exit /b ::-------------------------------------------------------------------------------- 五、总结BAT脚本是一种简单而强大的自动化工具,适用于Windows操作系统。通过掌握基础语法、常用命令、控制语句及高级技巧,并学会解决中文乱码问题,我们可以编写出功能强大的批处理脚本,实现各种自动化任务。而随着技术的不断发展和进步,BAT脚本仍然具有一定的应用场景和需求,值得深入学习和探索,这里也希望本文对您学习和使用 Bat 脚本有所帮助,并在工作中发挥出它的潜力和价值。
创作不易,如果有帮助到你的话请给点个赞吧!我是Wasteland,下期文章再见!
