千家信息网

Windows下bat脚本

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,bat:批处理(Batch)是一种简化的脚本语言,也称作宏。它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)
千家信息网最后更新 2026年10月31日Windows下bat脚本

bat:

批处理(Batch)是一种简化的脚本语言,也称作宏。它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等中高级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直接编辑或用DOS命令创建,也可以用DOS下的文本编辑器Edit.exe来编辑。在"命令提示"下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe运行该批处理程序。一般情况下,每条命令占据一行;当然也可以将多条命令用特定符号(如:&;、&&;、|、||等)分隔后写入同一行中;还有的情况就是像if、for等较高级的命令则要占据几行、几十甚至几百行的空间。系统在解释运行批处理程序时,首先扫描整个批处理程序,然后从第一行代码开始向下逐句执行所有的命令,直至程序结尾或遇见exit命令或出错意外退出。

echo [{on|off}] [message]

Sample:@echo off / echo hello world

rem [注释内容]

示例:rem 你好。

::和rem还是有区别的,当关闭回显时,rem和::后的内容都不会显示。但是当打开回显时,rem后的内容会显示出来,然而::后的内容仍然不会显示。

Pause 此命令将显示下面的消息:

Press any key to continue. . .(或:请按任意键继续. . .)

call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。

call [路径文件名] [标签]]

start 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。

如:start calc.exe即可打开Windows的计算器

goto 跳转命令。程序指针跳转到指定的标签,从标签后的第一条命令开始继续执行批处理程序

示例:

:1

start

goto 1

注释:会打开很多个窗口(用来整人相当不错)。先用start命令打开窗口,再用goto 1命令转到1标签。注意标签名字前面要加上英文的冒号。

set 显示、设置或删除变量。批处理中的变量是不区分类型的

示例:

set aa=345 ##变量aa的值既可以被视为数字345,也可以被视为字符串345

命令"setlocal enabledelayedexpansion"来开启延迟变量开关

@ 回显屏蔽,表示不显示@后面的命令

>、>>(输出重定向) <(输入重定向)

^(转义符):将特殊字符转为普通字符,特殊符号指:| & > <

示例:

echo ^>

逻辑命令符包括:&;、&&;、||

&:用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;

&&:前面的命令成功执行时,执行&&后面的命令,前面命令失败则后面不执行;

||:当前面的命令失败时,执行||后面的命令,否则不执行后面命令;

if语句:

(1)字符串比较

IF [not] string1 compare-op string2 command1 [else command2]

compare-op有以下几类:

== - 等于

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

注:选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非

示例:if %str1%==%str2% (echo 字符串相同!) else (echo 字符串不相同!)

if /i %str1% LSS %str2% (echo str1^=str2)

交互式:

echo.

set /p choice=是否显示当前时间?(y/n)

if /i not %choice% EQU n echo 当前时间是:%date% %time%

pause>nul

(2)存在判断

IF [NOT] EXIST filename command1 [else command2]

示例:

@echo off

if exist %0 echo 文件%0是存在的!

if not exist %~df0 (

echo 文件夹%~df0不存在!

) else echo 文件夹%~df0存在!

pause>nul

注释:存在判断既可以判断文件也可以判断文件夹、格式严格按上(%0即代表该批处理的全称,%~df0是对%0的修正,只保留了其驱动器盘符和路径)

(3)定义判断(判断变量是否存在)

IF [not] DEFINED variable command1 [else command2]

示例:

@echo off

set var=111

if defined var (echo var=%var%) else echo var尚未定义!

set var=% %

if defined var (echo var=%var%) else echo var尚未定义!

pause>nul

(4)结果判断

for语句:

(1)无开关

FOR %%variable IN (set) DO command

示例:for %%i in (a,"b c",d) do echo %%i

注释:%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%)

(2)开关(大小写都可)

FOR /L %%variable IN (start,step,end) DO command ##/L可根据start、step、end控制循环次数

FOR /F ["options"] %%variable IN (set) DO command ##/F

##开关/D罗列出所有文件 /R遍历文件夹

字符串:

=========================================

@echo off

set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789

echo 原字符串(第二行为各字符的序号):

echo %ifo%

echo 1234567890123 45678901234567890123456

echo 截取前5个字符:

echo %ifo:~0,5%

echo 截取最后5个字符:

echo %ifo:~-5%

echo 截取第一个到倒数第6个字符:

echo %ifo:~0,-5%

echo 从第4个字符开始,截取5个字符:

echo %ifo:~3,5%

echo 从倒数第14个字符开始,截取5个字符:

echo %ifo:~-14,5%

pause

=========================================

=========================================

@echo off

echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒

pause

=========================================

替换字符串

=========================================

@echo off

set aa=伟大的中国!我为你自豪!

echo 替换前:%aa%

echo 替换后:%aa:中国=中华人民共和国%

echo aa = %aa%

set "aa=%aa:中国=中华人民共和国%"

echo aa = %aa%

pause

=========================================

字符串合并

@echo off

set aa=伟大的中国!

set bb=我为你自豪!

echo %aa%%bb%

echo aa=%aa%

echo bb=%bb%

set "aa=%aa%%bb%"

echo aa=%aa%

pause

扩充字符串

=========================================

~I - 删除任何引号("),扩充 %I

%~fI - 将 %I 扩充到一个完全合格的路径名

%~dI - 仅将 %I 扩充到一个驱动器号

%~pI - 仅将 %I 扩充到一个路径

%~nI - 仅将 %I 扩充到一个文件名

%~xI - 仅将 %I 扩充到一个文件扩展名

%~sI - 扩充的路径只含有短名

%~aI - 将 %I 扩充到文件的文件属性

%~tI - 将 %I 扩充到文件的日期/时间

%~zI - 将 %I 扩充到文件的大小

%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充

到找到的第一个完全合格的名称。如果环境变量名

未被定义,或者没有找到文件,此组合键会扩充到

空字符串

可以组合修饰符来得到多重结果:

%~dpI - 仅将 %I 扩充到一个驱动器号和路径

%~nxI - 仅将 %I 扩充到一个文件名和扩展名

%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充

到找到的第一个驱动器号和路径。

%~ftzaI - 将 %I 扩充到类似输出线路的 DIR

=========================================

注:%0是批处理里面的参数,代表当前运行的批处理的完全路径。类似的还有%1-%9,分别代表传递来的第1-9个参数

字符计算

=========================================

() - 分组

! ~ - -一元运算符(逻辑非、按位非、取负)

* / % - 算数运算符(乘、除得商、除得余数,即取余)

+ - - 算数运算符(加、减)

<< >> - 逻辑移位(左移一位、右移一位)

& - 按位"与"

^ - 按位"异"

| - 按位"或"

= *= /= %= += -= - 赋值

&= ^= |= <<= >>=

,-表达式分隔符(set可一次处理多个表达式)

=========================================


命令 字符 文件 程序 路径 字符串 变量 示例 标签 系统 运行 内容 文件夹 时间 注释 逻辑 驱动器 中国 驱动 一行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网是第几次科技革命的成果 互联网科技深圳 互联网巨头科技公司 互联网科技公司发展 华中科技大学互联网 米客互联网科技 佰商互联网科技有限公司 哈尔滨秒房互联网科技有限公司 广州恒生互联网科技有限 哈尔滨屹滨互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 合肥互联网科技公司公章图片 黑科技 体验场景 互联网大会 上海钢联属于互联网科技股吗 深圳互联网科技的发展 互联网科技年终奖 深圳互联网科技园地址 伍佰万互联网科技是干嘛的 高科技和互联网的现代国家 互联网科技卖菜 互联网科技论坛 深圳艾佳互联网科技 中化能源互联网科技招聘 重庆互联网医院沙龙医盟信息科技 厦门千工互联网科技有限公司 996高科技互联网公司 天津腾达互联网科技有限公司 互联网科技实习生岗位 容联科技互联网电商
0