15.6.Bat脚本编写

15.6.Bat脚本编写

Windows 10 BAT(批处理)脚本编写是一种用于自动化任务的命令行脚本方式。通过编写BAT脚本,你可以批量执行系统命令、文件操作、程序启动等任务。BAT脚本是一种基于Windows命令行解释器(CMD)的脚本文件,通常具有.bat扩展名。

15.6.1.基础概念

批处理文件(BAT):是一种文本文件,可以包含一系列命令,通常用于自动化任务。

命令提示符(CMD):Windows的命令行工具,执行批处理文件时,CMD会逐行解析文件中的命令。

15.6.2.基础语法

命令:每行可以包含一个命令,如 dir、echo、cd 等。

注释:使用 REM 或 :: 来写注释。

|-----------------------|
| REM 这是一个注释 :: 这是另一种注释 |

执行命令:直接输入命令行内容,例如 echo Hello World,显示文本 "Hello World"。

15.6.3.常见命令

1)文件操作命令:

copy:复制文件

del:删除文件

move:移动文件

xcopy:复制文件夹及其内容

mkdir:创建目录

rmdir:删除目录

2)系统命令:

echo:打印输出到命令行

cls:清屏

pause:暂停批处理,等待用户按键继续

exit:退出批处理脚本

3)条件判断:

if:条件判断

else:条件不成立时执行的命令

4)循环控制:

for:循环操作,适用于遍历文件或变量

15.6.4.变量

环境变量:通过 %VARIABLE_NAME% 来引用系统环境变量,例如 %PATH%、%USERPROFILE%。

自定义变量:通过 set 命令创建变量。例如:

|------------------------------|
| set myVar=Hello echo %myVar% |

用户输入:使用 set /p 命令获取用户输入。

|--------------------------------------|
| set /p name=请输入你的名字: echo 你好,%name%! |

15.6.5.流程控制

条件判断:

|-------------------------------------------------------|
| if exist "file.txt" ( echo 文件存在 ) else ( echo 文件不存在 ) |

循环结构:

|-------------------------------------|
| for %%i in (*.txt) do ( echo %%i ) |

这个例子会循环打印当前目录下所有 .txt 文件的文件名。

15.6.6.错误处理

使用 if errorlevel 来检查上一命令的返回值。

|---------------------------------------|
| command if errorlevel 1 ( echo 错误发生 ) |

15.6.7.常用控制命令

goto:跳转到指定标签位置。

|-------------------------------|
| goto :label :label echo 跳转成功! |

call:调用其他批处理文件或脚本。

|-----------------------|
| call other_script.bat |

start:启动一个新的命令行窗口运行命令。

|-------------------|
| start notepad.exe |

timeout:暂停脚本运行一段时间。

|---------------|
| timeout /t 10 |

exit /b:退出当前脚本或子程序。

|---------|
| exit /b |

15.6.8.文件与目录操作

文件复制:

|---------------------------------|
| copy source.txt destination.txt |

文件删除:

|--------------|
| del file.txt |

目录创建:

|------------------|
| mkdir new_folder |

查找文件:

|------------------|
| dir /s /b *.txt |

15.6.9.批处理脚本调试

开启命令回显:使用 echo on 开启回显,查看命令执行情况。默认是 echo off,即不显示命令。

调试模式:使用 @echo off 来避免显示命令,仅显示输出结果。

15.6.10.高级技巧

管道与重定向:

>:输出重定向

>>:追加输出

<:输入重定向

|:管道符,将一个命令的输出作为另一个命令的输入

|----------------------|
| dir > file_list.txt |

批处理函数:利用 call 和标签(label)定义类似函数的结构。

|------------------------------|
| :hello echo 你好,世界! goto :eof |

15.6.11.常见问题与优化

1)批处理执行顺序:命令按顺序逐行执行,异步执行可以使用****start 命令。

2)性能问题:避免不必要的循环和重复执行命令;尽量减少外部程序的调用。

3)安全问题:避免批处理脚本中包含敏感信息(如密码),并确保脚本路径和文件名的安全。

15.6.12.示例

下面是一个包含所有基本内容的示例BAT脚本。这个脚本演示了如何使用变量、文件操作、条件判断、循环、用户输入、错误处理以及其他常见命令。

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| @echo off REM 这是一个示例BAT脚本,演示了基本的批处理语法和功能。 :: 设置环境变量 set myVar=Hello, World! set /p userName=请输入你的名字: :: 打印问候信息 echo %myVar%, %userName%! :: 创建目录并检查目录是否存在 set dirName=test_folder if exist %dirName% ( echo 目录 %dirName% 已经存在。 ) else ( echo 创建目录 %dirName%... mkdir %dirName% ) :: 文件操作:复制、删除文件 echo 创建文件 hello.txt... echo %userName% 的问候 > hello.txt echo 文件 hello.txt 已创建,准备复制... copy hello.txt %dirName%\hello_copy.txt echo 文件复制完成。 :: 使用for循环遍历目录中的文件 echo 当前目录中的文件列表: for %%f in (*.*) do ( echo %%f ) :: 错误处理:检查文件是否存在 if exist hello.txt ( echo hello.txt 文件存在。 ) else ( echo 错误:hello.txt 文件不存在! ) :: 等待用户输入继续 pause :: 跳转到标签并执行 goto :start_script :start_script echo 脚本开始执行! :: 使用timeout暂停5秒 timeout /t 5 :: 启动记事本 echo 启动记事本... start notepad.exe :: 删除文件和目录 echo 删除创建的文件和目录... del hello.txt del %dirName%\hello_copy.txt rmdir /s /q %dirName% :: 程序结束 echo 脚本执行完毕,退出。 exit /b |

15.6.13.常见使用

参考:[附录E 常见Bat使用案例](#附录E 常见Bat使用案例)

相关推荐
課代表1 天前
WindoWs 系统管理批处理脚本
windows·安全·脚本·注册表·bat·命令·组策略
LostSpeed17 天前
debug - MDK - arm-none-eabi - 从MDK工程做一个makefile工程出来
makefile·bat·mdk·arm-none-eabi
林月明2 个月前
【bat工具】在文件夹一堆文件中快速查找和打开所需文件的方法之一
bat·办公·快速查找和打开文件
励志成为糕手2 个月前
大数据MapReduce架构:分布式计算的经典范式
大数据·hadoop·mapreduce·分布式计算·批处理
问道飞鱼5 个月前
Flink 高可用集群部署指南
flink·部署·批处理·流式批处理
vfvfb5 个月前
bat批量去掉本文件夹中的文件扩展名
服务器·windows·批处理·删除扩展名·bat技巧
疯狂学习GIS6 个月前
Python的ArcPy基于Excel表格对大量遥感影像批量重分类
python·arcpy·批处理·遥感数据·遥感影像·重分类·栅格重分类
叹无痕6 个月前
【adb】bat批处理+adb 自动亮屏,自动解锁屏幕,启动王者荣耀
android·adb·bat
宇宙无敌花心大萝卜7 个月前
使用BAT批处理加PYTHON进行WORD批量文字删除
python·word·bat·批处理