import os from datetime import datetime def extract_filenames(): print("=" * 50) print("批量提取文件名工具") print("=" * 50) folder_path = input("\n请输入文件夹路径: ").strip() if not folder_path: print("文件夹路径不能为空!") return if not os.path.isdir(folder_path): print(f"错误: 路径 '{folder_path}' 不存在或不是文件夹!") return recursive = input("是否包含子文件夹? (y/n, 默认y): ").strip().lower() if recursive == 'n': recursive = False else: recursive = True output_filename = input("输出文件名 (直接回车使用自动命名): ").strip() print(f"\n正在扫描文件夹: {folder_path}") if recursive: print("模式: 包含子文件夹 (递归)") else: print("模式: 仅当前文件夹") print("请稍候...") filenames = [] try: for root, dirs, files in os.walk(folder_path): for filename in files: full_path = os.path.join(root, filename) rel_path = os.path.relpath(full_path, folder_path) filenames.append(rel_path) if not recursive: break filenames.sort() folder_name = os.path.basename(os.path.abspath(folder_path)) if output_filename: output_path = os.path.join(os.path.dirname(os.path.abspath(folder_path)), output_filename) else: timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") output_filename = f"{folder_name}_filenames_{timestamp}.txt" output_path = os.path.join(os.path.dirname(os.path.abspath(folder_path)), output_filename) with open(output_path, 'w', encoding='utf-8') as f: for name in filenames: f.write(name + '\n') print(f"\n完成! 共找到 {len(filenames)} 个文件") print(f"结果已保存到: {output_path}") except Exception as e: print(f"发生错误: {e}") if __name__ == "__main__": extract_filenames() input("\n按回车键退出...")