"""Sort files into Year/Month folders by their modified date.
Usage:  python organise_by_date.py "C:\path\to\folder"          (preview only)
        python organise_by_date.py "C:\path\to\folder" --move   (really move)
"""
import sys, shutil
from datetime import datetime
from pathlib import Path

folder = Path(sys.argv[1]) if len(sys.argv) > 1 else Path("sample_files")
really = "--move" in sys.argv
for f in sorted(folder.iterdir()):
    if not f.is_file():
        continue
    when = datetime.fromtimestamp(f.stat().st_mtime)
    target = folder / str(when.year) / when.strftime("%m-%b")
    dest = target / f.name
    n = 1
    while dest.exists():                      # never overwrite: add (1), (2)…
        dest = target / f"{f.stem} ({n}){f.suffix}"; n += 1
    print(("MOVE " if really else "would move ") + f"{f.name}  ->  {dest.relative_to(folder)}")
    if really:
        target.mkdir(parents=True, exist_ok=True)
        shutil.move(str(f), str(dest))
if not really:
    print("\nPreview only. Add --move to actually move the files.")
