**Batch(批处理脚本)**是DOS下的批处理文件。通常用于Windows执行一系列命令,从而简化日常或重复性任务。
为什么要学Batch?
1.自动化任务:批处理脚本可以用来自动化重复性的任务,如备份文件、清理临时文件夹、更新软件等,这可以节省时间并减少人为错误。
2.简化复杂操作:通过编写批处理脚本,可以将一系列复杂的命令和操作封装成简单的命令执行,使得用户即使不熟悉详细的命令行操作也能轻松完成任务。
3.快速部署:在软件部署和系统配置过程中,批处理脚本可以用来快速设置环境,确保一致性和可重复性。
一、目录或文件
-
start
- 打开目录:
start C:\apps
- 打开文件:
start C:\apps\eg.txt
- 打开目录:
-
del
- 删除当前目录下
eg.txt
文件:del eg.txt
- 删除上级目录下
eg.txt
文件:del ..\eg.txt
- 删除当前目录下
TEST
目录下所有.o
文件:del TEST\*.o
- 删除指定文件:
del C:\TEST\eg.txt
- 删除指定目录下的所有文件(不包括子目录文件):
del C:\apps\TEST\*.*
- 删除指定目录及其所有子目录中的所有文件,而不会询问你是否确认删除:
del C:\apps\TEST\*.* /s /q
- 删除当前目录下
-
rd
- 删除指定目录(只适用于空文件夹,否则无用):
rd C:\apps\TEST
- 删除指定目录及其内容(且不会询问):
rd C:\apps\TEST /s/q
- 删除指定目录(只适用于空文件夹,否则无用):
-
ren
- 修改文件名,将
eg.txt
改为EG.bat
:ren eg.txt EG.bat
- 修改文件扩展名,将所有
.txt
扩展名改为.mp3
:ren *.txt *.mp3
- 修改文件名,将
-
copy
- 复制
eg.txt
到TEST2
:copy eg.txt TEST2
- 复制当前目录下所有
.o
文件到TEST2
:copy *.o TEST2
- 创建新文件并输入内容:
copy con test.txt
- 复制
-
md
- 在
C:\apps
下创建TEST3
:md C:\apps\TEST3
- 在
-
attrib
- 隐藏
TEST
目录:attrib +s +h C:\apps\TEST
- 取消隐藏
TEST
目录:attrib -s -h C:\apps\TEST
- 隐藏
-
dir
- 显示当前目录下所有
.o
文件:dir *.o
- 显示指定目录下(例如C盘的Windows)所有文件:
dir C:\Windows /s
- 显示当前目录中的文件和文件夹:
dir
- 显示包括隐藏文件的当前目录:
dir /a
- 显示当前目录下所有
-
cd
- 切换目录到根目录:
cd\
- 切换目录:
cd
- 切换目录到根目录:
-
type
- 显示特定类型文件的内容:
type C:\apps\TEST\*.txt
- 显示文件内容:
type C:\apps\TEST\1.txt
- 显示特定类型文件的内容:
-
find
- 在文件中查找文本:
find "abc" C:\apps\TEST\1.txt
- 在文件中查找不区分大小写的文本:
find /i "abc" C:\apps\TEST\1.txt
- 在文件中查找并计数:
find /c "abc" C:\apps\TEST\1.txt
- 在文件中查找文本:
二、显示
-
echo和@
- 关闭单行回显:
@
- 从下一行开始关闭回显:
echo off
- 从本行开始关闭回显:
@echo off
- 从下一行开始打开回显:
echo on
- 在当前的命令行界面输出一个空行:
echo
- 关闭单行回显:
-
cls
- 清屏:
cls
- 清屏:
-
ver
- 显示版本信息:
ver
- 显示版本信息:
-
tree
- 显示目录结构:
tree C:\
- 显示目录结构:
三、开关机
-
shutdown**
-
60s后自动关机:
shutdown -s -t 60
-
取消自动关机:
shutdown -a
-
立即重启:
shutdown -r -t 0
-
60s后自动休眠:
shutdown -h -t 60
-
四、环境变量与路径
- 显示当前环境变量:
echo %PATH%
- 添加路径到环境变量:
setx PATH "%PATH%;C:\新路径"
- 设置环境变量:
set var=value
五、语句
-
if
if [条件] ([操作符] [值]) [命令1] [命令2] [条件]:可以是文件存在、字符串比较、错误级别等。 [操作符]:用于比较的运算符,如"=="(等于)、"ne"(不等于)、"lt"(小于)、"le"(小于等于)、"gt"(大于)、"ge"(大于等于)等。 [值]:用于比较的值。 [命令1]:如果条件为真(true)时执行的命令。 [命令2]:如果条件为假(false)时执行的命令(可选)。
例如:
-
检查文件是否存在:
if exist file.txt ( echo 文件存在 ) else ( echo 文件不存在 )
-
比较字符串:
if "%variable%"=="value" ( echo 字符串匹配 ) else ( echo 字符串不匹配 )
-
检查错误级别:
if %errorlevel%==0 ( echo 没有错误发生 ) else ( echo 发生了错误 )
-
使用逻辑运算符:
if "%1"=="start" ( if "%2"=="/k" ( echo 启动并保持窗口打开 ) else ( echo 启动 ) ) else ( echo 参数不正确 )
-
-
for
for [变量] in (集合) do [命令] [变量]:在每次循环迭代中,这个变量会被赋予集合中的下一个元素。 (集合):可以是文件列表、字符串列表、命令输出等。 do [命令]:对集合中的每个元素执行的命令。
例如:
-
遍历文件列表:
for %%f in (*.txt) do ( echo 处理文件: %%f type %%f ) ::这个例子会遍历当前目录下所有的.txt文件,并打印出每个文件的内容。
-
遍历字符串:
for %%i in (a b c) do ( echo %%i ) ::这个例子会依次打印出字符串a、b和c。
-
遍历变量扩展:
for /f "tokens=1,2 delims=," %%a in ('dir /b /a-d') do ( echo 文件名: %%a echo 大小: %%b ) ::这个例子会遍历当前目录下的文件(不包括目录),并打印出每个文件的名称和大小。
-
遍历环境变量:
for %%v in (%PATH%) do ( echo %%v ) ::这个例子会遍历PATH环境变量中的每个路径。
-
使用
for /1
进行数值循环:for /l %%i in (1, 1, 5) do ( echo %%i ) ::这个例子会从1循环到5,每次循环变量%%i的值增加1。
-
-
goto
- 跳转到示例处:
goto eg
- 定义示例:
:eg
- 跳转到示例处:
六、注释
- 例如:
::这是注释
七、参数
batch中每个命令有很多个参数,要了解特定命令支持的所有参数,可以在命令行中使用命令名 /?
来获取帮助信息,例如
del /?