import os
import shutil
import argparse
import sys
def main():
parser = argparse.ArgumentParser(description='移动电影文件到目标文件夹')
parser.add_argument('files', nargs='+', help='电影文件路径列表或目录')
args = parser.parse_args()
if not args.files:
print("请提供至少一个电影文件路径或目录")
sys.exit(1)
# 智能识别目标文件夹名称
import datetime
# 获取所有输入路径的共同前缀
common_prefix = os.path.commonprefix(args.files)
if common_prefix:
# 提取前缀的最后一部分作为文件夹名
prefix_name = os.path.basename(common_prefix.rstrip(os.sep))
if prefix_name:
target_folder = f"{prefix_name}_集合"
else:
# 如果没有有效前缀,使用当前日期
target_folder = datetime.datetime.now().strftime("%Y%m%d") + "_集合"
else:
# 如果没有共同前缀,使用当前日期
target_folder = datetime.datetime.now().strftime("%Y%m%d") + "_集合"
# 创建目标文件夹
os.makedirs(target_folder, exist_ok=True)
movie_extensions = ['.mp4', '.mkv', '.avi', '.mov', '.flv', '.wmv', '.rmvb', '.rm', '.mpg', '.mpeg', '.vob', '.dat', '.ts', '.m2ts', '.tp', '.trp', '.mts', '.m2t']
# 收集所有要移动的文件
files_to_move = []
for path in args.files:
if os.path.isdir(path):
# 如果是目录,递归收集所有电影文件
for root, dirs, files in os.walk(path):
for file in files:
file_extension = os.path.splitext(file)[1].lower()
if file_extension in movie_extensions:
files_to_move.append(os.path.join(root, file))
else:
# 如果是文件,直接检查扩展名
file_extension = os.path.splitext(path)[1].lower()
if file_extension in movie_extensions:
files_to_move.append(path)
# 移动文件
for file_path in files_to_move:
target_path = os.path.join(target_folder, os.path.basename(file_path))
if os.path.exists(target_path):
print(f"跳过已存在的文件:{target_path}")
continue
shutil.move(file_path, target_path)
print(f"移动文件:{file_path} -> {target_path}")
print(f"电影文件移动完成!共移动{len(files_to_move)}个文件,目标文件夹:{os.path.abspath(target_folder)}")
return os.path.abspath(target_folder)
if __name__ == "__main__":
main()