Shell脚本(linux)
Linux的批处理通常指 Shell脚本(如Bash脚本)。
- 你在Linux上写批处理 → 通常用 Bash脚本(
.sh文件)。 - 你在Windows上写批处理 → 传统用 批处理(
.bat) ,高级用 PowerShell(.ps1) 。 - Linux上的PowerShell是额外工具,不是默认批处理方案。
shell vs 批处理:
(by the way,Deepseek 生成的内容默认使用的是 Markdown 格式进行排版。)
批处理脚本(Windows)
批处理脚本(.bat 或 .cmd)在 Windows 环境中能实现非常多的自动化功能,尤其适合重复性的、基于命令行和文件系统的任务。以下是一些主要的功能类别及具体例子:
1. 文件与文件夹管理
这是批处理最擅长的领域。
- 批量重命名:为大量文件按规则添加前缀、后缀、序号或替换字符。
- 批量删除/复制/移动:按扩展名(如
.tmp)、文件名模式或日期筛选并操作文件。 - 整理文件夹:按扩展名、修改日期自动将文件分类移动到不同文件夹。
- 删除空文件夹:递归扫描并删除所有空目录。
- 创建多层目录:一键生成项目所需的复杂文件夹结构。
2. 系统配置与维护
- 管理环境变量:临时或永久添加/删除/修改
PATH、JAVA_HOME等系统或用户变量。 - 管理服务:启动、停止、重启、查询 Windows 服务(如
net start/stop)。 - 管理进程:通过
taskkill强制结束指定进程(如关闭无响应的程序)。 - 计划任务:结合
schtasks命令创建、删除或运行计划任务。 - 清理系统垃圾:删除临时文件(
%temp%)、清空回收站、清除 DNS 缓存。 - 修改注册表:通过
reg add/delete/query导入、导出或修改注册表项(用于调整系统设置或禁用功能)。
3. 软件安装与部署
- 静默安装/卸载:配合安装包的静默参数(如
/quiet、/S)批量部署软件。 - 拷贝配置文件:部署后自动将预设配置覆盖到指定路径。
- 检测软件是否已安装:通过查询注册表或
Program Files来决定是否跳过安装步骤。
4. 数据处理与文本操作
- 批量替换文件内容:使用
findstr、for循环或调用 PowerShell 命令,批量替换多个文本文件中的字符串。 - 合并文件:将所有
.txt或.log文件合并成一个。 - 提取特定行/列:从日志或 CSV 文件中提取包含关键词的行。
- 生成文件列表:将目录下所有文件名输出到文本文件,方便记录或比对。
5. 备份与同步
- 增量备份:用
xcopy /d只复制修改日期较新的文件。 - 压缩备份:调用
7z.exe(需自带)将指定文件夹压缩为带时间戳的.zip或.7z文件。 - 同步两个文件夹:结合
robocopy命令实现单向同步(镜像、仅复制新增等)。 - 数据库备份:调用
mysqldump或sqlcmd自动导出数据库为.sql文件。
6. 网络相关操作
- 批量 Ping 检测:读取 IP 列表文件,逐一测试连通性并记录不通的地址。
- 映射/断开网络驱动器:使用
net use自动登录 NAS 或共享文件夹。 - 下载文件:调用
certutil或bitsadmin从 URL 下载文件(无需第三方工具)。 - 获取公网/本机 IP:结合
curl(新版 Windows 自带)或nslookup获取并记录。
7. 开发与编译辅助
- 一键编译运行:执行
javac、gcc、msbuild等命令,并将依赖的 JAR 或 DLL 加入参数。 - 设置临时开发环境:运行脚本后自动设置好
PATH和各类_HOME变量,关闭窗口即失效。 - 自动运行测试:编译后自动执行单元测试脚本,并将结果输出到日志。
8. 定时任务与自动化流程
- 轮询等待:每隔几秒检查某个文件是否存在或某个进程是否结束,满足条件后继续。
- 自动关机/重启:在完成长时间任务(如备份)后执行
shutdown /s /t 0。 - 发送邮件通知:通过 PowerShell 命令(内嵌在批处理中)或第三方邮件工具发送完成/报错通知。
9. 交互与用户界面
虽然简陋,但可以实现简单的交互:
- 菜单选择:使用
choice命令让用户按 1、2、3 选择不同功能分支。 - 获取用户输入:使用
set /p让用户输入文件路径或特定参数。 - 彩色输出与提示:通过
echo配合 ANSI 转义序列(Windows 10 以上)或调用findstr变通实现彩色文字。
10. 故障排查与信息收集
- 收集系统信息:运行
systeminfo、ipconfig /all、tasklist等命令并将输出重定向到一个文件。 - 一键诊断脚本:依次 ping 网关、检查关键服务、查看磁盘空间,最后汇总显示。
需要注意的限制:
- 性能较差:不适合处理大规模数值计算或复杂文本解析(建议用 PowerShell 或 Python)。
- 无 GUI:所有操作在黑框里完成,交互体验原始。
- 错误处理弱:虽然能用
errorlevel判断,但远不如高级语言的 try-catch。 - 依赖外部命令:很多高级功能(如压缩、下载)需要系统自带或不自带的工具。
总的来说,批处理最适合:小而美的文件操作、简单的系统配置、软件部署流程、以及把现有命令行工具串联成一个自动化流水线。当逻辑变得复杂(如需要正则、哈希计算、JSON 解析、网络请求)时,建议切换到 PowerShell 或直接写 Python 脚本。
PowerShell 是微软(Windows)开发的一种任务自动化框架,包含一个命令行壳层(Shell)和一种脚本语言。你可以把它理解为 CMD 批处理的超级升级版,专门用于系统管理和自动化复杂任务。