【bat脚本】一文带你玩转bat脚本命令到自动化应用
文章目录
- 一、背景
- 二、bat基础知识
- 2.1 bat脚本的概念
- 2.2 bat脚本的创建与编辑
- 2.3 bat脚本的执行
- 三、bat常用语法命令
- 3.1 基本内部命令
- 3.1.1 REM 和 ::
- 3.1.2 ECHO 和 @
- 3.1.3 PAUSE
- 3.1.4 SET
- 3.1.5 ERRORLEVEL
- 3.1.6 TITLE
- 3.1.7 COLOR
- 3.1.8 IF
- 3.1.9 GOTO 和 :
- 3.1.10 FOR
- 3.1.11 FIND
- 3.1.12 START
- 3.1.13 CALL
- 3.1.14 type
- 3.1.15 setlocal 与 变量延迟
- 3.1.16 mshta命令
- 3.2 常用特殊符号命令
- 3.2.1 @命令行回显屏蔽符
- 3.2.2 %批处理变量引导符
- 3.2.3 > 重定向符
- 3.2.4 >>重定向符
- 3.2.5 |命令管道符
- 3.2.6 其他符号命令
- 3.3 网络与系统管理命令
- 3.4 文件管理命令
- 四、bat常见应用与实战
- 4.1 命令行快速打开网站
- 4.2 微信应用多开
- 4.3 猜数字整蛊小游戏
- 4.4 批量修改文件名
- 4.5 搜索文件夹
- 4.6 倒计时
- 4.7 进度条
- 五、总结
导航参见:
【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: est” 目录下,可以输入 cd D: est 来切换到该目录。
③如果想跨目录使用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
进制数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
颜色 | ⿊⾊ | 蓝⾊ | 绿⾊ | 湖蓝⾊ | 红⾊ | 紫⾊ | 黄⾊ | ⽩⾊ | 灰⾊ | 淡蓝⾊ | 淡绿⾊ | 浅绿⾊ | 淡红⾊ | 淡紫⾊ | 淡黄⾊ | 亮⽩⾊ |
3.1.8 IF
🌱if的作用:进行条件或分支的判断。如果指定的条件成立,则执行一个或多个命令,否则执行另一个命令。
下面是 If 命令的基本语法格式:
if [not] condition command
如果 condition 成立,则执行 command。如果使用了 “not” 关键字,则表示条件不成立时执行 command。
以下是一些常用的条件:
equ:如果两个条件相等,则为真。例如,if 5 equ 5。
neq:如果两个条件不相等,则为真。例如,if 5 neq 10。
lss:如果第一个条件小于第二个条件,则为真。例如,if 5 lss 10。
leq:如果第一个条件小于或等于第二个条件,则为真。例如,if 5 leq 5。
gtr:如果第一个条件大于第二个条件,则为真。例如,if 10 gtr 5。
geq:如果第一个条件大于或等于第二个条件,则为真。例如,if 10 geq 10。
3.1.9 GOTO 和 :
🌱goto的作用:与:搭配进而实现跳转执行命令。
例如:同goto命令配合实现命令行窗口打印1到4之间的整数
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 GOTO start
pause
3.1.10 FOR
🌱for的作用:在Bat脚本中用于执行循环和遍历操作。它可以遍历文件、文件夹、字符串列表等,并对每个元素执行一组命令。语法如下:
for %%parameter in (set) do command
补充说明:
(1)for、in和do是for语句的关键字,它们三个缺一不可;
(2)%%parameter是一个可以替代的循环变量,可以使用任意名称,在bat的for中使用。如果直接在命令行中使用For命令,需要使用%parameter;
%parameter这个关键字不能在bat中使用,只能在CMD命令下的for中使用。在cmd中:for %parameter in(command1) do command2;
(3)in和do之间括号不能省略,之间的(set) 表示指定要遍历的元素集合的表达式,其可以是文件名、文件夹路径、字符串列表或一些其他的表达式,
变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;
(4)command 是要在每个循环迭代中执行的一组命令。
for /f 遍历指定目录下所有的文件和文件夹
for /d 遍历指定目录下所有的文件夹
for /r 遍历指定目录下所有的文件和子文件夹中的文件
例如:遍历文件夹中的文件
for %%f in (D:path oolder*) do (
echo %%f
REM 在此处执行其他命令
)
此示例中,D:path oolder* 是要遍历的文件夹路径和通配符,%%f 是循环变量,遍历文件夹中的每个文件,并在每次循环中执行一组命令。
例如:遍历文件内容行
for /F "delims=" %%l in (file.txt) do (
echo %%l
REM 在此处执行其他命令
)
此示例中,(file.txt) 是要遍历的文件,%%l 是循环变量,遍历文件的每一行,并在每次循环中执行一组命令。
/F选项指示 For 命令读取文件内容而不是文件名。
例如:遍历字符串列表
for %%s in (apple orange banana) do (
echo %%s
REM 在此处执行其他命令 )
此示例中,apple orange banana是要遍历的字符串列表,%%s是循环变量,遍历列表中的每个元素,并在每次循环中执行一组命令。
3.1.11 FIND
🌱find的作用:在文件中搜索字符串,语法如下:
find [/v][/c][/n][/i][/off[line]] "字符串" [[drive:][path]filename[...]]
以下是字符的具体说明:
/v 显示所有未包含指定字符串的行
/c 仅显示包含字符串的行数
/n 显示行号
/i 搜索字符串时忽略大小写
/off[line] 不要跳过具有脱机属性集的文件
“字符串” 指定要搜索的字符串
[drive:][path]filename 指定要搜索的文件
3.1.12 START
🌱start的作用:批处理中用来调用外部程序的命令,语法如下:
start 外部程序 [参数]
以下是参数的具体说明:
/D path 指定程序的起始目录
/MIN 最小化启动窗口
/MAX 最大化启动窗口
/WAIT 等待启动的程序结束后才继续脚本
/B 在同一窗口中启动程序
/b 隐藏控制台执行程序
该命令将在新进程中运行外部程序,原批处理程序将继续执行
执行运行外部程序则会等待外部程序完成后再继续执行后续指令
示例:start explorer d: 将会使用图形界面打开D盘。
3.1.13 CALL
🌱call的作用:在批处理执⾏过程中调⽤另⼀个批处理脚本文件,语法如下:
call 指定批处理文件
例如:调用同目录下的myscript.bat文件
call myscript.bat
3.1.14 type
🌱type的作用:显示文本文件的内容
例如:显示文本文件test.txt里的内容
type test.txt
如果只想输出我们所需要的要查找的内容,则可以改写为如下写法:
type 文件名 | find "关键字"
例如:显示文本文件test.txt里的“huge”
type test.txt | find "huge"
3.1.15 setlocal 与 变量延迟
🌱setlocal enabledelayedexpansion的作用:开启变量赋值延迟
例如案例1:
@echo off
set a=4
set a=5 echo %a%
pause
解释:猜猜这个打印的结果是什么?答案:4。那么为什么是4而不是5呢?
让我们先了解一下批处理运行命令的机制:
批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5 echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!
而为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。
那么如何开启变量延迟呢?变量延迟又需要注意什么呢?举个例子说明一下:
例如案例2:
@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 echo !a!
pause
解释:启动了变量延迟,得到了正确答案。变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来(注意要用英文的叹号),否则就没有变量延迟的效果。
分析一下例2,首先“setlocal enabledelayedexpansion”开启变量延迟,然后“set a=4”先给变量a赋值为
4,“set a=5 echo !a!”这句是给变量a赋值为5并输出(由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了)。
3.1.16 mshta命令
🌱mshta命令作用:mshta可以调用vb脚本和js脚本
例如:
mshta vbscript:window.execScript("alert('hello world!');","javascript")(window.close)
mshta javascript:window.execScript("msgBox('hello world!')(window.close)","vbs")
mshta vbscript:msgbox("弹窗单行显示内容",65,"弹窗的标题")(window.close)
mshta vbscript:CreateObject("Wscript.Shell").popup("弹窗内容",7,"标题",64)(window.close)
::连续弹二个信息框
mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close")
3.2 常用特殊符号命令
3.2.1 @命令行回显屏蔽符
🌱@的作用:用在任何命令前面,实现关闭当前行的回显
例如:
ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令,
现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求
3.2.2 %批处理变量引导符
🌱%的作用:变量引导
这个百分号严格来说是算不上命令的,它只是批处理中的参数而已
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*为命令⾏传递给批处理的参数
%0 批处理⽂件本⾝,包括完整的路径和扩展名
%1 第⼀个参数
%9 第九个参数
%* 从第⼀个参数开始的所有参数
参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
例:最简单的复制文件自身的方法
copy %0 d:wind.bat
小技巧:添加行内注释
%注释内容%(可以用作行内注释,不能出现重定向符号和管道符号)
3.2.3 > 重定向符
🌱>的作用:传递并且覆盖,将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台)
例如:
使用命令:echo hello >1.txt将建立文件1.txt,内容为”hello “(注意行尾有一空格)
使用命令:echo hello>1.txt将建立文件1.txt,内容为”hello“(注意行尾没有空格)
3.2.4 >>重定向符
🌱>>的作用:其作用与>相似,但是差异点在于>是在覆盖,而>>是传递并在文件的末尾追加
3.2.5 |命令管道符
格式:第一条命令 | 第二条命令 [| 第三条命令...]
将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。
例如:
dir c:|find "txt"
以上命令是:查找C:所有,并发现TXT字符串。
3.2.6 其他符号命令
(1)🌱^的作用:^是对特殊符号<,>,的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。
例如:
echo test ^>1.txt
运行结果实际是打印了test >1.txt,不要误以为会把test覆盖写入到1.txt文件中
注意:如果把>放到行尾,其会让回车符失效,从而达到了续行的作用。
(2)🌱&&的作用:这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行
语法:第一条命令 && 第二条命令 [&& 第三条命令...]
这里两边的命令是顺序执行的,从前往后执行。
例如:
dir z: && dir y: && dir c:
以上命令会连续显示z,y,c盘的内容,不理会该盘是否存在
(3)🌱&的作用:同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令
语法:第一条命令 & 第二条命令 [& 第三条命令...]
这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行
例如:dir z: & dir y: & dir c:
以上命令如果dir z:失败,则后面的命令也不会执行
(4)🌱||的作用:当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
语法:第一条命令 || 第二条命令 [|| 第三条命令...]
(5)🌱, 的作用:逗号相当于空格,在某些情况下“,”可以用来当做空格使
(6)🌱;的作用:当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行
例如:
dir c:;d:;e:;z:
以上命令相当于
dir c:
dir d:
dir e:
dir f:
(7)🌱()的作用:使括号中的多行命令,这些命令将被看成一个整体,视为一条命令行
(8)🌱!的作用:在变量延迟问题中,用来表示变量,即%var%应该表示为!var!
**********************************重要提示:****************************************
组合命令和重定向命令一起使用必须注意优先级
管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令
**********************************重要提示:****************************************
3.3 网络与系统管理命令
命令 | 说明 |
---|---|
tasklist | 作用:查看当前计算机中运行的任务列表 |
taskkill | 作用:结束进程 |
shutdown | 作用:立即或定时关机或重启 |
ping | 作用:进行网络连接测试、名称解析,如ping www.baidu.com |
sc | 作用:执行该条语句后会立即执行之后的代码,不会等待停止/启动的过程,如sc start MySQL和sc stop MySQL和 |
net | 作用:关闭/启动MySQL服务,等待停止/启动的过程,完成后执行之后的代码 |
ipconfig | 作用:显示、修改TCP/IP设置 |
ftp | 作用:文件传输 |
3.4 文件管理命令
命令 | 说明 |
---|---|
mkdir | 作用:创建新的文件夹 。例如创建test文件夹:mkdir test |
copy | 作用:可以复制一个或多个文件到指定目录。例如把C盘文件夹复制到D盘backup中:copy C:ile.txt D:ackup |
move | 作用:将文件移动到指定目录。例如把C盘文件移到到D盘backup中:move C:ile.txt D:ackup |
del | 作用:可以删除一个或多个文件。例如删除 C:ile.txt 文件:del C:ile.txt |
for /d | 作用:可以循环遍历文件夹。for /d %%f in (C:older*) do (echo %%f REM 在此处执行其他命令) |
ren | 作用:可以重命名一个或多个文件。例如将 C:oldname.txt 文件重命名为 newname.txt:ren C:oldname.txt newname.txt |
四、bat常见应用与实战
在本章节里,我将给大家介绍一些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 FilesTencentWeChat"WeChat.exe
start C:"Program FilesTencentWeChat"WeChat.exe
③右击doubleWeChat脚本,发送到桌面快捷方式
④右击桌面上的快捷方式修改其图标,最后doubleWeChat也会跟原生微信的图标一样
⑤双击桌面上的doubleWeChat图标,即可跳出两个微信登陆弹窗(由于不能发布微信截取图,这里就大家自己尝试即可。此外,如果想登更多微信,只需修改上面命令行数即可)
⑥如果是在登录一个微信的时候运行“doubleWeChat”会显示当前已登录微信的主界面,而不是打开两个微信登录窗口,在这里提供一个方法,原理就是先关闭正在运行的微信程序,然后重新打开两个微信,代码如下:
taskkill /F /FI "IMAGENAME eq WeChat.exe"
start C:"Program FilesTencentWeChat"WeChat.exe
start C:"Program FilesTencentWeChat"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,下期文章再见!
本文地址:https://www.vps345.com/4586.html