批处理脚本基础知识快速掌握

server/2025/3/25 20:56:16/

一、批处理脚本概述
​定义
批处理脚本是一种基于命令行的自动化脚本语言,通过.bat或.cmd文件保存,由Windows系统的cmd.exe解释器执行。
​核心作用
自动化重复性任务(如文件操作、系统配置)
批量处理文件(搜索、复制、删除)
集成命令行工具(如ping、netstat)
简单的系统管理(服务控制、注册表操作)
​执行环境
原生支持:Windows CMD.EXE
PowerShell兼容:可通过&或call调用PowerShell命令
跨平台扩展:WSL(Windows Subsystem for Linux)中可运行Linux命令
​二、批处理基础语法
​脚本结构
batch
:: 注释(以::开头或#开头)
@echo off :: 关闭命令回显
[label] :: 标签(用于跳转)
command :: 执行命令
goto label :: 跳转到标签
exit /b [code] :: 退出脚本(可选返回码)
​命令分隔符
&:顺序执行多个命令
batch
dir & echo 完成
||:条件执行(前命令失败则执行后命令)
batch
net start service || echo 服务启动失败
&&:条件执行(前命令成功则执行后命令)
batch
dir file.txt && type file.txt
​三、常用内置命令
命令 功能 示例
dir 列出目录内容 dir /s /a(递归显示所有文件)
cd/chdir 切换目录 cd C:\Users
copy 复制文件 copy src.txt dest.txt
del/erase 删除文件 del .tmp(删除临时文件)
move 移动或重命名文件 move old.txt new.txt
type 显示文件内容 type log.txt
findstr 文本搜索 findstr “error” log.txt
ping 测试网络连通性 ping www.baidu.com
tasklist 显示进程列表 `tasklist
shutdown 关机/重启 shutdown /s /t 60(60秒后关机)
​四、变量与运算
​变量声明
batch
setlocal enabledelayedexpansion :: 启用延迟变量扩展
set VAR=value :: 定义局部变量
setx VAR=value /M :: 定义环境变量(全局生效)
​特殊变量
%~1:第一个参数
%ERRORLEVEL%:上一条命令的返回码
%DATE%/%TIME%:当前日期时间
%%VAR%%:在循环中引用变量(延迟扩展需!VAR!)
​算术运算
batch
set /a C=A+B :: 加法
set /a D=A-5 :: 减法
set /a E=A
10 :: 乘法
set /a F=A/3 :: 整数除法
​五、条件判断与循环
if语句
batch
if %VAR% == value (
command1
) else (
command2
)
for循环
batch
for %%F in (.txt) do (
echo 处理文件:%%F
)
支持通配符
/?和范围遍历(如1 2 3)
while循环
batch
:loop
command
if condition (
goto loop
)
​六、高级技巧
​错误处理
batch
if %ERRORLEVEL% neq 0 (
echo 错误:%ERRORLEVEL%
exit /b 1
)
​日志记录
batch
command >> log.txt :: 追加输出到日志
command 2>&1 >> log.txt :: 捕获错误流并记录
​参数传递
batch
:: 脚本内接收参数
set ARGS=%*
echo 参数:%ARGS%
​调用外部程序
batch
call python script.py :: 调用Python脚本
​七、批处理 vs PowerShell
特性 批处理脚本 PowerShell
语法简洁性 依赖CMD命令 基于.NET对象模型
跨平台支持 仅Windows 支持Windows/Linux/macOS
复杂操作能力 有限 强大(正则表达式、管道操作)
学习曲线 低(适合快速脚本) 较高(需熟悉PowerShell语法)
​八、注意事项
​路径问题
使用绝对路径避免歧义(如C:\path\to\file)
工具路径未添加时需指定完整路径(如C:\Python39\python.exe script.py)
​权限问题
部分操作需管理员权限(如修改注册表、启动服务)
​测试与调试
逐行测试:echo command查看实际执行的命令
使用pause暂停执行检查中间状态
​九、示例脚本
场景:批量重命名PDF文件(添加日期前缀)

batch
@echo off
setlocal enabledelayedexpansion
set DATE=%date:10,4%%date:4,2%%date:~7,2%
for %%F in (*.pdf) do (
set NEWNAME=!DATE!_%%F
ren “%%F” “!NEWNAME!”
)
echo 重命名完成!


http://www.ppmy.cn/server/178534.html

相关文章

基于蒙特卡洛方法的网格世界求解

一、概述 该代码主要实现了在一个简单的网格世界环境中,使用蒙特卡洛方法来求解最优值函数和最优策略。网格世界由一个固定大小的方格组成,智能体可以在其中执行特定的动作(上、下、左、右),并根据状态转移规则和奖励函…

c#难点整理2

1.对象池的使用 就是先定义一系列的对象&#xff0c;用一个&#xff0c;调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…

【Golang】defer与recover的组合使用

在Go语言中&#xff0c;defer和recover是两个关键特性&#xff0c;通常结合使用以处理资源管理和异常恢复。以下是它们的核心应用场景及使用示例&#xff1a; 1. defer 的应用场景 defer用于延迟执行函数调用&#xff0c;确保在函数退出前执行特定操作。主要用途包括&#xff…

(UI自动化测试)第二篇:元素定位的方法_class定位

第三种定位 方式&#xff1a;class定位 ⽅法&#xff1a; driver.find_element_by_class_name(“class属性值”) 前置&#xff1a; 标签必须有class属性 特点&#xff1a; class属性值可以有多个值 说明&#xff1a;如果标签有多个class值&#xff0c;使⽤任何⼀个都可以。如&…

C++函数与STL

一、万能头 #include<bits/stdc.h>using namespace std; #define int long long //万一题目卡数值范围signed main() {return 0; } 二、常用函数 1、排序函数 正序&#xff1a; sort(a, a n); 逆序&#xff1a; 先sort(a, a n); 再reverse(a, a n); //n是你要排序的…

工具层handle_excel

该工具类利用openpyxl的load_workbook加载Excel&#xff0c;通过iter_rows按行迭代数据&#xff0c;将表头和用例数据用zipdict组合成字典&#xff0c;通过list.append将字典(单条测试用例)追加到列表中&#xff0c;从而封装Excel数据解析工具。 模块/类方法/属性使用场景描述o…

2024 浅浅总结

写在前面&#xff1a;【财富自由计算助手】已上线&#xff0c;快算算财富自由要多少 愿你有一个灿烂的前程 愿你有情人终成眷属 愿你在尘世获得幸福 ——《海子的诗》 借着今天&#xff0c;浅浅写下这大半年的一些收获吧。 01 认识到了系统的重要性。 系统至上&#xf…

画一个分布式系统架构图,标注服务注册、网关、熔断

画一个分布式系统架构图&#xff0c;标注服务注册、网关、熔断。 整体架构 这是一个典型的微服务架构&#xff0c;包括客户端、网关、服务注册中心、多个微服务实例以及数据库/缓存。以下是各组件的布局和功能&#xff1a; 1.客户端&#xff08;Client&#xff09;&#xff1…