Back to blog

How to Automatically Move Files From One Folder to Another

Automatically move files from one folder to another on Windows and Mac. Compare batch scripts, Automator folder actions, and rules that never miss a file.

September 2, 2026
File Arbor Team

To automatically move files from one folder to another you have three options: a scheduled script, your operating system's built-in folder automation, or a rule-based file organizer that watches the folder and moves each file as it arrives. Scripts are free and brittle. Built-in automation is free and limited. A watcher costs money and does not miss.

This guide walks through all three on Windows and Mac, with working examples, the failure modes nobody documents, and an honest answer about which one belongs in your setup.

Why Moving Files by Hand Never Sticks

The problem is not that moving a file is hard. It is that the decision repeats. Every invoice, screenshot, export, and installer arrives in the same folder and needs the same three seconds of thought, several times a day, forever.

Downloads is where this shows up first because every application on your machine writes there by default. Your browser, your email client, your chat apps, your design tools. Nothing else on your computer has that many writers and no owner.

So the folder grows. You clean it on a Sunday, feel good about it, and by the following Friday there are ninety files in it again. The cleanup was real work and it bought you five days.

Automation changes the economics. You spend ten minutes describing the decision once, and the machine repeats it for you. The rest of this guide is about the three ways to do that, and what each one actually costs.

What Are the Three Ways to Move Files Automatically?

  1. A script on a timer — free, works everywhere, runs on a schedule rather than on arrival, and fails quietly.
  2. Built-in folder automation — free, no extra software, tightly limited and unreliable for downloads specifically.
  3. A rule-based file organizer — an app that watches the folder, matches conditions, moves the file, and logs what it did.

They are ordered by effort, not by quality. Start at the top if you enjoy scripting. Start at the bottom if you want the folder to stay clean without becoming your project.

Method 1: A Batch Script and Task Scheduler on Windows

Windows has no built-in feature that moves files as they arrive. What it has is move, and a scheduler that can run it repeatedly.

Save this as move-pdfs.bat, editing the two paths:

@echo off
set "SOURCE=C:\Users\YourName\Downloads"
set "DEST=C:\Users\YourName\Documents\PDFs"

if not exist "%DEST%" mkdir "%DEST%"
move /Y "%SOURCE%\*.pdf" "%DEST%\"

Then schedule it:

  1. Open Task Scheduler and choose Create Basic Task.
  2. Name it, then set the trigger to Daily and open the advanced settings.
  3. Tick Repeat task every and pick 5 or 15 minutes, with a duration of Indefinitely.
  4. Set the action to Start a program and point it at your .bat file.
  5. On the General tab, tick Run whether user is logged on or not if you want it running in the background.

That works. Here is what it costs you.

It runs on a timer, not on arrival. With a five-minute interval, a file sits in the wrong place for up to five minutes. That is fine for archiving and wrong for anything you are about to open.

move /Y overwrites silently. Download invoice.pdf twice and the second one destroys the first, with no prompt and no recycle bin. Dropping the /Y is worse — the script hangs waiting for a keypress nobody will press.

It fails quietly. If the destination drive is disconnected, or a file is open in another application, move writes an error to a console window that closes instantly. The task still reports success.

Every new condition is more code. Moving PDFs is one line. Moving PDFs older than thirty days, but not the ones with draft in the name, into a folder named for the current year is a real PowerShell script that you now maintain.

Scripts are the right answer when you already write scripts and the job is a nightly batch. They are the wrong answer when the job is keeping Downloads clean.

Method 2: Folder Actions and Automator on Mac

macOS ships with event-driven folder automation, which is more than Windows offers. It is called Folder Actions, and Automator builds them.

  1. Open Automator and create a new Folder Action.
  2. At the top, set Folder Action receives files and folders added to and choose your source folder.
  3. Drag in Filter Finder Items and set a condition, for example File extension is pdf.
  4. Drag in Move Finder Items below it and pick the destination.
  5. Save it with a name. It is now attached to that folder.

Then it does not work, and you spend an evening finding out why.

Downloads arrive under a temporary name. Safari writes to a .part file while downloading; Chrome uses .crdownload. The folder action fires the moment that temporary file appears, your filter checks it, sees the wrong extension, and discards it. When the download finishes, the browser renames the file in place — and a rename does not fire a folder action. Your PDF never gets moved, and nothing in the interface tells you why. This is the most common Folder Actions complaint on Apple's own support forums.

Filter Finder Items is unreliable. Long-running threads on Apple Support Communities and the Apple Developer forums describe workflows where the filter passes nothing through even when the condition clearly matches. The usual workaround is to remove the filter and do the matching in an AppleScript block instead, which means you are now writing AppleScript.

There is no history and no undo. A Folder Action that moves the wrong thing leaves you searching Finder for where it went.

It is one folder at a time. Every watched folder needs its own workflow, maintained separately.

Folder Actions are worth using for simple, non-browser folders — a scanner output folder, or an export folder that an app writes to only when it has finished. For Downloads, the .part problem alone rules them out.

Method 3: A Rule-Based File Organizer on Windows and Mac

A file organizer is an app that does the watching for you. You describe the files in plain conditions, pick a destination, and the app handles arrival detection, folder creation, name conflicts, and logging.

File Arbor works this way on both Windows and macOS. A rule is a set of conditions and one action:

  • Conditions — extension, name contains, name starts with, name ends with, regular expression, larger than, smaller than, older than, newer than, text inside the document. Up to five can be combined in a single rule with AND logic.
  • Action — move to a destination (optionally under a new name), rename in place, send to the Recycle Bin, delete permanently, or run a shell command.
  • Trigger — a manual run, Auto Mode which watches the folder and acts on arrival, or a schedule on chosen days and times.

Three differences matter compared with the previous two methods.

The destination can build itself. Instead of a fixed path, the destination accepts tokens. Writing Documents/<Year>/<MonthName> creates Documents/2026/September and files into it, then rolls over to a new folder next month on its own. Photo tokens go further and read EXIF data, so <Camera> and <ExifYear> sort a card dump by the camera that took the shot. There is more on this in the guide to organizing files into year and month folders.

Nothing is overwritten by accident. The default conflict behavior renames the incoming file rather than replacing what is already there. You can switch it to overwrite or skip, but you have to choose that deliberately.

Every move is recorded and reversible. The History page lists each move with the file, the destination, the rule that fired, and the timestamp — and moves can be undone. That is the piece scripts and Folder Actions have no answer for, and it is what makes automatic moving safe enough to trust. We wrote about why in a file organizer with history.

The free plan covers one watched folder, two rules, matching by file type, and twenty organized files per day — enough to test the idea on a real folder. Auto Mode, scheduling, regex, subfolder scanning, and unlimited rules are part of Pro, a one-time $24.99 purchase with lifetime updates. Full details are on the pricing page.

Where it falls short: File Arbor matches on names, extensions, sizes and dates (a photo's camera and capture date can name the destination folder, but are not conditions), and Pro adds content conditions for PDFs, DOCX, and text files — since 1.3.0 also scanned PDFs and photos, read with OCR, though only their first and last page. Encrypted PDFs are not read at all. If you need word-list variables to route a file by a customer name printed inside an invoice, File Juggler on Windows is the tool that has them, and it costs $50.

Which Method Should You Choose?

"I want Downloads to stay clean without thinking about it." Use a file organizer. This is the case scripts and Folder Actions serve worst, because of timers and .part files respectively.

"I already write PowerShell and this is a nightly archive job." Use a script. You will finish it in twenty minutes and it will run for years.

"I need one folder on my Mac tidied, and nothing downloads into it." Use a Folder Action. It is free, it ships with the OS, and outside the browser case it holds up.

"The rule depends on what is written inside the document." Use a content rule: File Arbor Pro on Windows or Mac (scans included since 1.3.0), File Juggler on Windows, or Hazel on Mac with a Spotlight condition. Name-based tools cannot do this and should not pretend otherwise.

"I use Windows at work and a Mac at home." Use a file organizer that runs on both. Scripts and Folder Actions do not transfer between platforms, so you would be maintaining two systems.

Five Moves Worth Automating First

Pick one. A single rule that works beats five rules you never verified.

  1. Installers out of Downloads. Match .exe, .msi, .dmg, .pkg and move them to an Installers folder. Pair it with a second rule that deletes them once they are older than thirty days.
  2. Screenshots off the Desktop. Match name starts with Screenshot or Screen Shot and move to Pictures/Screenshots/<Year>-<Month>.
  3. Invoices into a dated folder. Match name contains invoice AND extension is pdf, destination Documents/Invoices/<Year>.
  4. Camera imports by date. Match .jpg, .cr2, .nef, .arw, destination Pictures/<ExifYear>/<ExifDate:yyyy-mm-dd>.
  5. Large video files off the system drive. Match extension is mp4 AND larger than 500 MB, destination an external or secondary drive.

How to Stop It From Breaking Later

Keep the destination outside the watched folder. If Downloads/PDFs is the destination while Downloads is watched with subfolder scanning on, the tool finds the same files again on the next pass.

Order your rules from specific to general. A rule matching every .pdf placed above a rule matching invoice PDFs means the invoice rule never fires.

Watch out for files that are still being written. Large downloads, video exports, and database dumps grow for minutes. Add an "older than 1 minute" condition, or watch a folder that the application writes to only when it is finished.

Review the log after a week. Not the folder — the log. The folder tells you where files are now; the log tells you which rule put them there and whether it was the rule you meant.

The Takeaway

For a nightly archive on a machine you administer, write the script. For one quiet folder on a Mac, a Folder Action costs nothing. For the folder that actually generates the mess — Downloads, on a machine you use every day — a watcher that acts on arrival, never overwrites, and keeps an undoable log is the only one of the three that stays fixed.

Download File Arbor and set up the first rule on one folder. To see the full approach end to end, start with organizing your Downloads folder automatically.