问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Windows脚本:BAT脚本看这一篇就够了

创作时间:
作者:
@小白创作中心

Windows脚本:BAT脚本看这一篇就够了

引用
CSDN
1.
https://m.blog.csdn.net/weixin_43431593/article/details/144743363

在Windows系统中,批处理脚本(Batch Script)是一种强大而简单的自动化工具。通过将多个命令组织成脚本文件,可以帮助我们完成重复性任务、批量操作、系统配置等,极大提高工作效率。本文将从基础知识到实战应用,全面介绍BAT脚本的使用方法,帮助读者快速掌握这一实用技能。

一、Windows脚本基本知识

1、了解扩展名

Windows脚本扩展名其实有两个:.bat和.cmd。它们在大部分情况下可以互换使用,但也有一些细微的差异。基本语法是相同的,因此,只要会.dat脚本,基本就会.cmd脚本。这里简单描述一下不同点:

对比项
.bat
.cmd
适用范围
兼容早期 DOS 和 Windows 系统
专用于 Windows NT 系列系统(如 Windows 2000 及更高)
变量处理
在某些情况下与 DOS 兼容,变量处理可能有不一致
仅适用于 Windows NT 环境,变量处理更标准化
命令解析优先级
在某些旧系统中可能存在兼容性问题
在 NT 系列系统中,.cmd优先于.bat执行
历史背景
DOS 和早期 Windows 系统的默认批处理文件扩展名
Windows NT 系列引入的扩展名,增强兼容性
兼容性
支持旧的 DOS 命令,如CALL
专为 NT 命令集设计,支持更现代化的语法

另外,PowerShell也是Windows脚本。它是CMD的扩展,更强大的存在,跨平台,能够兼容CMD所有指令,只是语法(如for)是不兼容的,但是语法更简洁,而且还兼容Linux指令。因此,BAT语法还是需要单独学习的,后面转PowerShell也不难,后续还会单独讲PowerShell。

2、脚本的编程方式

脚本的使用方式一般是在Windows上进行的,创建一个txt文件,更改后缀为bat,通过txt打开并编程,保存后双击文件运行即可。

有一些好用的第三方工具,可以编辑脚本后直接运行,如Notepad++ 、BatchCompiler等,喜欢用哪个就用哪个,重要的是玩起来。

3、CMD指令不区分大小写

CMD指令不区分大小写,这样输入是等价的:CMD == Cmd ==CMD == CmD。

4、空格不能乱加

在批处理(.bat)脚本中,空格的使用是有特定规则的,不能随意添加,如变量赋值。

二、BAT脚本语法基础

官方文档:CMD | Microsoft Learn

1、注释

:: 这是一个注释
REM 这也是一个注释

2、变量赋值与取值

set a=John
echo %a%

3、输入、输出与暂停

pause命令用于暂停批处理文件的执行,并提示用户按任意键继续。

set /P a=
echo %a%
pause

4、关闭命令回显

即@echo off 的效果,用于关闭命令回显功能。

@echo off
set /P a=
echo %a%
pause

5、清屏

即cls的效果,将该指令之前的打印信息清空。

@echo off
set /P a=
cls
echo %a%
pause

6、条件语句

简单的if语句,如:if "%a%"=="John" echo Hi, John!

@echo off
set /P a=
cls
echo %a%
if "%a%"=="John" echo Hi, John!
pause

7、循环语句

@echo off
for %%i in (1 2 3) do echo %%i
pause

8、重定向

覆盖:>;追加:>>。

@echo off
echo Hello > C:\Users\yeqin\Desktop\test\output.txt
dir >> C:\Users\yeqin\Desktop\test\output.txt
pause

9、切换路径与当前路径

cd可以切换路径,但是不能直接切换到其他盘符路径。准确的说,cd 也能切换盘符,需要加上 /d 选项。

cd ..
echo %cd%

10、切换盘符

直接输入盘符标识。

C:

11、错误处理

检查上一个命令的执行状态,通过%ERRORLEVEL%判断。invalid_command是一个不存在的指令,因此会触发错误,%ERRORLEVEL%的值会变成非零(通常为 1)。

invalid_command
if %ERRORLEVEL%==0 echo Success
if %ERRORLEVEL% neq 0 echo Error occurred

12、一行中编写多条指令

&将多条命令串联在一起,无论前一条命令是否成功,都会执行下一条命令。

echo Hello & echo World

&&:前一条命令成功(返回值为0)时,执行后一条命令。

dir && echo Directory listed successfully

|将前一条命令的输出作为下一条命令的输入。

dir | find "test"

||:前一条命令失败(返回值非0)时,执行后一条命令。

dir nonexistent_folder || echo Failed to list directory

13、函数与标签

BAT没有函数概念,只有标签概念,只能简单使用类似函数的部分功能。

@echo off
:: 主程序
echo Starting the script...
:: 调用add函数,传递两个参数
call :add 5 10
echo The sum is %RESULT%
:: 调用greet函数,传递一个参数
call :greet John
pause
goto :EOF
:: 函数add
:add
:: 第一个参数为%1,第二个参数为%2
set /a RESULT=%1+%2
goto :EOF
:: 函数greet
:greet
:: 输出传递的第一个参数
echo Hello, %1!
goto :EOF

14、模块化与call

仅支持运行BAT文件,不支持调用其他文件中的标签。

@echo off
call C:\Users\yeqin\Desktop\other.bat
pause

三、项目实战

(持续更新中。。。)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号