Files
AohCopyRou/demo/copy_rou.py
2025-12-18 20:21:02 +08:00

108 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import shutil
SOURCE_PATHS = [
r"Z:\Routing\A1-ROUTING\NEW-ROUTING",
r"Z:\Routing\A2-ROUTING\NEW-ROUTING"
]
DEST_PATH = r"D:\ARPTWork\rou"
def match_folder_name(folder_name, num_part, version_part):
"""匹配逻辑:从第四个字符开始匹配数字编号"""
folder_name_lower = folder_name.lower()
num_length = len(num_part)
if len(folder_name_lower) < 3 + num_length:
return False
num_in_name = folder_name_lower[4 : 4+num_length]
if num_in_name != num_part.lower():
return False
version_in_name = folder_name_lower[4+num_length:]
return version_in_name.startswith(version_part.lower())
def copy_rou_files(source_folder, number):
"""复制所有.rou系列文件"""
os.makedirs(DEST_PATH, exist_ok=True)
copied_files = []
ed_folders_found = 0
for item in os.listdir(source_folder):
item_path = os.path.join(source_folder, item)
if os.path.isdir(item_path) and (item.lower().startswith('ed') or item.lower().startswith('rou')):
ed_folders_found += 1
print(f"正在处理ED文件夹: {item}")
for root, _, files in os.walk(item_path):
for file in files:
if file.lower().endswith(('.rou', '.rou1', '.rou2', '.rou3')):
src_file = os.path.join(root, file)
base_name = f"{number}_{item}_{file}"
dest_file = os.path.join(DEST_PATH, base_name)
shutil.copy2(src_file, dest_file)
copied_files.append(base_name)
if ed_folders_found == 0:
print("警告: 未找到任何以ED开头的文件夹")
elif not copied_files:
print("警告: 在ED文件夹中未找到任何.rou系列文件")
else:
print(f"成功从 {ed_folders_found} 个ED文件夹复制 {len(copied_files)} 个文件:")
def process_codes(code_list):
"""处理多个代码"""
for code in code_list:
code = code.strip()
if not code:
continue
print(f"\n处理编号: {code}")
num_part = code[:5]
version_part = code[len(num_part):]
found = False
for source_root in SOURCE_PATHS:
num_folder = os.path.join(source_root, num_part)
if not os.path.exists(num_folder):
continue
for folder in os.listdir(num_folder):
if match_folder_name(folder, num_part, version_part):
full_path = os.path.join(num_folder, folder)
print(f"找到匹配文件夹: {full_path}")
copy_rou_files(full_path, num_part)
found = True
if not found:
print("未找到匹配的文件夹")
def main():
print("=== 文件复制工具 ===")
print(f"搜索路径: {SOURCE_PATHS}")
print(f"目标路径: {DEST_PATH}")
print("输入说明:")
print("1. 直接输入单个编号,如: 27362a")
print("2. 输入多行编号(每行一个)最后输入end结束")
print("3. 输入exit退出程序")
while True:
print("\n请输入编号(支持多行输入):")
user_inputs = []
while True:
line = input().strip()
if line.lower() == 'end':
break
if line.lower() == 'exit':
return
if line:
user_inputs.append(line)
if user_inputs:
process_codes(user_inputs)
if __name__ == "__main__":
main()