|
|
@@ -0,0 +1,102 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# 批量执行脚本工具
|
|
|
+# 用法: ./run_batch.sh <父目录> <脚本1.py> [脚本2.py] [脚本3.py] ...
|
|
|
+# 示例: ./run_batch.sh input sug_v2.py sug_v3.py
|
|
|
+
|
|
|
+set -e # 遇到错误立即退出
|
|
|
+
|
|
|
+# 检查参数数量
|
|
|
+if [ $# -lt 2 ]; then
|
|
|
+ echo "用法: $0 <父目录> <脚本1.py> [脚本2.py] ..."
|
|
|
+ echo "示例: $0 input sug_v2.py sug_v3.py"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# 获取父目录
|
|
|
+PARENT_DIR="$1"
|
|
|
+shift # 移除第一个参数,剩下的都是py脚本
|
|
|
+
|
|
|
+# 获取所有py脚本
|
|
|
+PY_SCRIPTS=("$@")
|
|
|
+
|
|
|
+# 检查父目录是否存在
|
|
|
+if [ ! -d "$PARENT_DIR" ]; then
|
|
|
+ echo "错误: 父目录 '$PARENT_DIR' 不存在"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# 检查所有py脚本是否存在
|
|
|
+for script in "${PY_SCRIPTS[@]}"; do
|
|
|
+ if [ ! -f "$script" ]; then
|
|
|
+ echo "错误: 脚本 '$script' 不存在"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+done
|
|
|
+
|
|
|
+# 获取父目录下的所有子目录
|
|
|
+echo "========================================="
|
|
|
+echo "开始批量执行"
|
|
|
+echo "父目录: $PARENT_DIR"
|
|
|
+echo "脚本列表: ${PY_SCRIPTS[*]}"
|
|
|
+echo "========================================="
|
|
|
+echo ""
|
|
|
+
|
|
|
+# 统计信息
|
|
|
+total_tasks=0
|
|
|
+success_tasks=0
|
|
|
+failed_tasks=0
|
|
|
+
|
|
|
+# 遍历父目录下的所有子目录
|
|
|
+for subdir in "$PARENT_DIR"/*/; do
|
|
|
+ # 移除末尾的斜杠
|
|
|
+ subdir="${subdir%/}"
|
|
|
+
|
|
|
+ # 检查是否是目录
|
|
|
+ if [ ! -d "$subdir" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 获取子目录名称
|
|
|
+ subdir_name=$(basename "$subdir")
|
|
|
+
|
|
|
+ echo "----------------------------------------"
|
|
|
+ echo "处理子目录: $subdir"
|
|
|
+ echo "----------------------------------------"
|
|
|
+
|
|
|
+ # 对每个py脚本执行
|
|
|
+ for script in "${PY_SCRIPTS[@]}"; do
|
|
|
+ total_tasks=$((total_tasks + 1))
|
|
|
+
|
|
|
+ echo ""
|
|
|
+ echo "[任务 $total_tasks] 执行: python $script --input-dir $subdir"
|
|
|
+ echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
|
+
|
|
|
+ # 执行脚本,捕获错误
|
|
|
+ if python "$script" --input-dir "$subdir"; then
|
|
|
+ success_tasks=$((success_tasks + 1))
|
|
|
+ echo "✓ 成功"
|
|
|
+ else
|
|
|
+ failed_tasks=$((failed_tasks + 1))
|
|
|
+ echo "✗ 失败"
|
|
|
+ # 继续执行其他任务,不退出
|
|
|
+ fi
|
|
|
+
|
|
|
+ echo "结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
|
+ echo ""
|
|
|
+ done
|
|
|
+done
|
|
|
+
|
|
|
+# 输出统计信息
|
|
|
+echo "========================================="
|
|
|
+echo "批量执行完成"
|
|
|
+echo "========================================="
|
|
|
+echo "总任务数: $total_tasks"
|
|
|
+echo "成功: $success_tasks"
|
|
|
+echo "失败: $failed_tasks"
|
|
|
+echo "========================================="
|
|
|
+
|
|
|
+# 如果有失败的任务,返回非零退出码
|
|
|
+if [ $failed_tasks -gt 0 ]; then
|
|
|
+ exit 1
|
|
|
+fi
|