2026-05-11 08:34:03 +08:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
"""
|
|
|
|
|
JRXML 文件收集脚本
|
|
|
|
|
从指定目录递归查找所有 .jrxml 文件并复制到项目的 jrxml_source 目录
|
2026-05-12 08:29:17 +08:00
|
|
|
源目录和目标目录通过 .env / config.py 配置
|
2026-05-11 08:34:03 +08:00
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
import shutil
|
2026-05-12 08:29:17 +08:00
|
|
|
from config import JRXML_SOURCE_DIR
|
2026-05-11 08:34:03 +08:00
|
|
|
|
|
|
|
|
def collect_jrxml_files(source_dir: str, target_dir: str) -> int:
|
|
|
|
|
"""
|
|
|
|
|
递归收集所有 .jrxml 文件并复制到目标目录
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
source_dir: 源目录路径
|
|
|
|
|
target_dir: 目标目录路径
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
复制的文件数量
|
|
|
|
|
"""
|
|
|
|
|
os.makedirs(target_dir, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
copied_count = 0
|
|
|
|
|
skipped_count = 0
|
|
|
|
|
|
|
|
|
|
print(f"开始扫描目录: {source_dir}")
|
|
|
|
|
print(f"目标目录: {target_dir}")
|
|
|
|
|
print("=" * 60)
|
|
|
|
|
|
|
|
|
|
for root, dirs, files in os.walk(source_dir):
|
|
|
|
|
for filename in files:
|
|
|
|
|
if filename.lower().endswith('.jrxml'):
|
|
|
|
|
source_path = os.path.join(root, filename)
|
|
|
|
|
target_path = os.path.join(target_dir, filename)
|
|
|
|
|
|
|
|
|
|
counter = 1
|
|
|
|
|
while os.path.exists(target_path):
|
|
|
|
|
name, ext = os.path.splitext(filename)
|
|
|
|
|
target_path = os.path.join(target_dir, f"{name}_{counter}{ext}")
|
|
|
|
|
counter += 1
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
shutil.copy2(source_path, target_path)
|
|
|
|
|
copied_count += 1
|
|
|
|
|
print(f"[OK] {source_path} -> {os.path.basename(target_path)}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
skipped_count += 1
|
|
|
|
|
print(f"[FAIL] {source_path}: {e}")
|
|
|
|
|
|
|
|
|
|
print("=" * 60)
|
|
|
|
|
print(f"完成!复制了 {copied_count} 个文件,跳过 {skipped_count} 个文件")
|
|
|
|
|
|
|
|
|
|
return copied_count
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2026-05-12 08:29:17 +08:00
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
if len(sys.argv) >= 2:
|
|
|
|
|
SOURCE_DIR = sys.argv[1]
|
|
|
|
|
else:
|
|
|
|
|
SOURCE_DIR = os.environ.get(
|
|
|
|
|
"JRXML_COLLECT_SOURCE",
|
|
|
|
|
r"C:\Users\zy187\JaspersoftWorkspace\JasperReportsSamples"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
TARGET_DIR = str(JRXML_SOURCE_DIR)
|
2026-05-11 08:34:03 +08:00
|
|
|
|
|
|
|
|
if not os.path.exists(SOURCE_DIR):
|
|
|
|
|
print(f"错误:源目录不存在 - {SOURCE_DIR}")
|
2026-05-12 08:29:17 +08:00
|
|
|
print("请检查路径是否正确,或通过命令行参数指定:")
|
|
|
|
|
print(f" python collect_jrxml.py <源目录路径>")
|
2026-05-11 08:34:03 +08:00
|
|
|
exit(1)
|
|
|
|
|
|
|
|
|
|
collect_jrxml_files(SOURCE_DIR, TARGET_DIR)
|