Kaynağa Gözat

add shell run

yangxiaohui 1 ay önce
ebeveyn
işleme
3332b2bc6a
1 değiştirilmiş dosya ile 102 ekleme ve 0 silme
  1. 102 0
      run_batch.sh

+ 102 - 0
run_batch.sh

@@ -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