前言
bat 脚本和 sh 脚本是分别用于 Windows 和 类 Unix 系统(如 Linux、macOS) 的批处理/脚本文件,用于自动化执行一系列命令
BAT 与 SH 脚本命令对比表
| 功能 | Windows .bat / .cmd 脚本 | Linux/macOS .sh 脚本(Bash) |
|---|---|---|
| 输出信息 | echo Hello World | echo "Hello World" |
| 注释 | :: 注释内容 或 rem 注释内容 | # 注释内容 |
| 变量赋值 | set name=张三 | name="张三" |
| 引用变量 | %name% | $name 或 ${name} |
| 执行命令并获取输出 | 不直接支持(需重定向到文件) | output=`ls` 或 output=$(ls) |
| 创建目录 | mkdir C:\temp | mkdir /tmp/temp |
| 删除文件 | del file.txt | rm file.txt |
| 删除目录(含内容) | rmdir /s /q folder | rm -rf folder |
| 复制文件 | copy file1.txt file2.txt | cp file1.txt file2.txt |
| 移动/重命名文件 | move old.txt new.txt | mv old.txt new.txt |
| 判断文件是否存在 | if exist file.txt echo 存在 | if [ -f file.txt ]; then echo "存在"; fi |
| 判断目录是否存在 | if exist C:\temp\nul echo 存在 | if [ -d /tmp ]; then echo "存在"; fi |
| 延迟/睡眠 | timeout /t 5 | sleep 5(单位:秒) |
| 调用另一个脚本 | call script2.bat | . script2.sh 或 source script2.sh 或 ./script2.sh |
| 跳转标签 | goto label:label | 使用函数:function label()label |
| 退出脚本 | exit 或 exit /b 0 | exit 0 |
| 设置可执行权限 | 不需要 | chmod +x script.sh |
| 执行脚本 | script.bat 或双击 | ./script.sh 或 bash script.sh |
| 当前脚本路径 | %~dp0 | $(dirname "$0") 或 $(realpath "$(dirname "$0")") |
| 参数引用 | %0(脚本名)%1, %2...(参数)%*(所有参数) | $0(脚本名)$1, $2...(参数)$@ 或 $*(所有参数) |
| 字符串连接 | set combined=%str1%%str2% | combined="$str1$str2" |
| 字符串长度 | 无内置命令(需 PowerShell 或复杂逻辑) | ${#var} |
| 获取子字符串 | 无直接支持 | ${var:0:5}(从索引0取5个字符) |
| 环境变量引用 | %PATH% | $PATH |
| 换行符 | \r\n(CRLF) | \n(LF) |
注意事项
路径分隔符:
- Windows:
\ - Linux/macOS:
/
- Windows:
大小写敏感性:
.bat:不区分大小写(命令和变量).sh:区分大小写
脚本首行(Shebang):
.sh脚本通常以#!/bin/bash开头,指定解释器。.bat脚本无此概念。
错误处理:
.bat:使用%errorlevel%获取上一条命令返回码。.sh:使用$?获取上一条命令退出状态。
我们编写跨平台脚本时,建议使用 PowerShell(.ps1)或 Python,它们在 Windows、Linux 和 macOS 上均有良好支持
.bat脚本集合
.sh脚本集合
补充扩展(定时任务)
Windows
- 我的电脑》》》控制面板》》》计划任务
- 任务计划程序库》》》创建基本任务
- 填写任务信息》》》执行间隔》》》执行脚本》》》是否登录运行

Linux
在Linux系统中,创建定时任务主要通过cron服务来实现
- 编辑Crontab文件
crontab -e
这个命令会打开当前用户的cron文件进行编辑。如果你是第一次使用,可能会让你选择编辑器(如nano或vi)
- 示例(每天凌晨2点执行一个名为my_script.sh的脚本)
0 2 * * * /path/to/your/script/my_script.sh
- 保存并退出
编辑完成后,根据选择的编辑器(如使用vi,则是:wq保存并退出),保存更改并退出编辑器
- 查看当前所有定时任务
crontab -l
注意事项
确保脚本有执行权限(chmod +x my_script.sh)。
脚本路径应该是绝对路径,以避免因环境变量不同导致的执行失败
2 comments
我也来试试
看的我热血沸腾啊