68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
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按回车键退出...") |