2026.4.18 批处理(Linux vs Windows)

0 阅读5分钟

Shell脚本(linux)

Linux的批处理通常指 Shell脚本(如Bash脚本)。

  • 你在Linux上写批处理 → 通常用 Bash脚本.sh 文件)。
  • 你在Windows上写批处理 → 传统用 批处理(.bat ,高级用 PowerShell(.ps1
  • Linux上的PowerShell是额外工具,不是默认批处理方案。

shell vs 批处理:

image.png

(by the way,Deepseek 生成的内容默认使用的是 Markdown 格式进行排版。)

批处理脚本(Windows)

批处理脚本(.bat 或 .cmd)在 Windows 环境中能实现非常多的自动化功能,尤其适合重复性的、基于命令行和文件系统的任务。以下是一些主要的功能类别及具体例子:

1. 文件与文件夹管理
这是批处理最擅长的领域。

  • 批量重命名:为大量文件按规则添加前缀、后缀、序号或替换字符。
  • 批量删除/复制/移动:按扩展名(如 .tmp)、文件名模式或日期筛选并操作文件。
  • 整理文件夹:按扩展名、修改日期自动将文件分类移动到不同文件夹。
  • 删除空文件夹:递归扫描并删除所有空目录。
  • 创建多层目录:一键生成项目所需的复杂文件夹结构。

2. 系统配置与维护

  • 管理环境变量:临时或永久添加/删除/修改 PATHJAVA_HOME 等系统或用户变量。
  • 管理服务:启动、停止、重启、查询 Windows 服务(如 net start/stop)。
  • 管理进程:通过 taskkill 强制结束指定进程(如关闭无响应的程序)。
  • 计划任务:结合 schtasks 命令创建、删除或运行计划任务。
  • 清理系统垃圾:删除临时文件(%temp%)、清空回收站、清除 DNS 缓存。
  • 修改注册表:通过 reg add/delete/query 导入、导出或修改注册表项(用于调整系统设置或禁用功能)。

3. 软件安装与部署

  • 静默安装/卸载:配合安装包的静默参数(如 /quiet/S)批量部署软件。
  • 拷贝配置文件:部署后自动将预设配置覆盖到指定路径。
  • 检测软件是否已安装:通过查询注册表或 Program Files 来决定是否跳过安装步骤。

4. 数据处理与文本操作

  • 批量替换文件内容:使用 findstrfor 循环或调用 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. 开发与编译辅助

  • 一键编译运行:执行 javacgccmsbuild 等命令,并将依赖的 JAR 或 DLL 加入参数。
  • 设置临时开发环境:运行脚本后自动设置好 PATH 和各类 _HOME 变量,关闭窗口即失效。
  • 自动运行测试:编译后自动执行单元测试脚本,并将结果输出到日志。

8. 定时任务与自动化流程

  • 轮询等待:每隔几秒检查某个文件是否存在或某个进程是否结束,满足条件后继续。
  • 自动关机/重启:在完成长时间任务(如备份)后执行 shutdown /s /t 0
  • 发送邮件通知:通过 PowerShell 命令(内嵌在批处理中)或第三方邮件工具发送完成/报错通知。

9. 交互与用户界面
虽然简陋,但可以实现简单的交互:

  • 菜单选择:使用 choice 命令让用户按 1、2、3 选择不同功能分支。
  • 获取用户输入:使用 set /p 让用户输入文件路径或特定参数。
  • 彩色输出与提示:通过 echo 配合 ANSI 转义序列(Windows 10 以上)或调用 findstr 变通实现彩色文字。

10. 故障排查与信息收集

  • 收集系统信息:运行 systeminfoipconfig /alltasklist 等命令并将输出重定向到一个文件。
  • 一键诊断脚本:依次 ping 网关、检查关键服务、查看磁盘空间,最后汇总显示。

需要注意的限制:

  • 性能较差:不适合处理大规模数值计算或复杂文本解析(建议用 PowerShell 或 Python)。
  • 无 GUI:所有操作在黑框里完成,交互体验原始。
  • 错误处理弱:虽然能用 errorlevel 判断,但远不如高级语言的 try-catch。
  • 依赖外部命令:很多高级功能(如压缩、下载)需要系统自带或不自带的工具。

总的来说,批处理最适合:小而美的文件操作、简单的系统配置、软件部署流程、以及把现有命令行工具串联成一个自动化流水线。当逻辑变得复杂(如需要正则、哈希计算、JSON 解析、网络请求)时,建议切换到 PowerShell 或直接写 Python 脚本。

PowerShell 是微软(Windows)开发的一种任务自动化框架,包含一个命令行壳层(Shell)和一种脚本语言。你可以把它理解为 CMD 批处理的超级升级版,专门用于系统管理和自动化复杂任务。