本文目录导读:

- 批处理脚本 (Windows .bat/.cmd)
- Shell 脚本 (Linux/macOS .sh)
- Python 脚本 (最常见)
- PowerShell 脚本 (Windows高级)
- 实用脚本示例:批量重命名文件
- 常见循环场景
- 注意事项
当然可以!实用脚本完全可以循环,而且循环是脚本中最常用、最强大的功能之一,无论是批处理、Shell、Python、JavaScript 还是 PowerShell,都支持循环结构。
下面我会从最常见的脚本场景给你一些实用的循环示例:
批处理脚本 (Windows .bat/.cmd)
@echo off
:: 循环处理当前目录下所有 .txt 文件
for %%f in (*.txt) do (
echo 正在处理:%%f
find "错误" %%f > nul
if errorlevel 1 (
echo 文件 %%f 没有发现错误
) else (
echo 文件 %%f 发现了错误!
)
)
:: 循环5次,每次打印数字
for /L %%i in (1,1,5) do (
echo 这是第 %%i 次循环
)
Shell 脚本 (Linux/macOS .sh)
#!/bin/bash
# 循环读取文件列表
for file in /var/log/*.log; do
if [ -f "$file" ]; then
echo "检查日志文件: $file"
tail -n 10 "$file" | grep -i "error"
fi
done
# 无限循环监控进程,直到手动停止
while true; do
if pgrep -x "nginx" > /dev/null; then
echo "$(date) - Nginx 运行正常"
else
echo "$(date) - 警告: Nginx 已停止!"
fi
sleep 5
done
Python 脚本 (最常见)
import os
import time
# 循环处理文件夹下所有图片
for filename in os.listdir("./images"):
if filename.endswith((".jpg", ".png", ".gif")):
print(f"正在处理: {filename}")
# 你的处理逻辑...
# resize_image(f"./images/{filename}")
# 带超时的循环
max_retries = 3
retry_count = 0
while retry_count < max_retries:
try:
# 尝试连接数据库
print(f"第 {retry_count+1} 次尝试...")
# connection = connect_db()
break # 成功则跳出
except Exception as e:
retry_count += 1
time.sleep(2)
PowerShell 脚本 (Windows高级)
# 循环导出所有用户信息
$users = Get-LocalUser
foreach ($user in $users) {
$userInfo = @{
Name = $user.Name
Enabled = $user.Enabled
LastLogon = $user.LastLogon
}
$userInfo | Export-Csv -Path "users_report.csv" -Append
}
# 循环直到用户输入
do {
$input = Read-Host "请输入 'exit' 退出"
Write-Host "你输入了: $input"
} while ($input -ne "exit")
实用脚本示例:批量重命名文件
Python 版:
import os
for count, filename in enumerate(os.listdir(".")):
if filename.endswith(".jpg"):
new_name = f"photo_{count+1:03d}.jpg"
os.rename(filename, new_name)
print(f"重命名: {filename} -> {new_name}")
批处理版:
@echo off
setlocal enabledelayedexpansion
set count=1
for %%f in (*.jpg) do (
set "newname=photo_!count!.jpg"
ren "%%f" "!newname!"
set /a count+=1
)
常见循环场景
| 场景 | 循环类型 | 说明 |
|---|---|---|
| 批量处理文件 | for file in files |
最常见 |
| 重试机制 | while retry < max |
网络请求、数据库连接 |
| 监控服务 | while true |
守护进程 |
| 定时任务 | for i in range(10) |
自动化测试 |
| 数据处理 | for row in data |
分析日志、CSV |
注意事项
- 避免无限循环:除非是故意的守护进程,否则要设置退出条件
- 性能考虑:循环内不要做过多IO操作,可以批量处理
- 退出机制:长循环最好提供 Ctrl+C 中断或
--dry-run预览模式 - 调试技巧:先加
echo或print看循环逻辑对不对,再执行实际操作
循环是实用脚本的灵魂,几乎所有自动化任务都离不开它,你具体想用脚本做什么?我可以给你更针对性的循环示例。