Step 1: Build the Mapping in Excel
Start with two columns. In column A, the current filename exactly as it is on disk, including the extension (Scan0043.pdf). In column B, the new name you want (2024-Acme-Invoice.pdf). One row per file. If your files follow some order you already track, a product list, a client roster, you can often generate column B with a formula (a CONCAT of a date, a name, and a counter) rather than typing every name by hand.
Accuracy in column A is the thing that trips people up: the old name has to match the file on disk character for character, or the rename skips it. Copying the real filenames into the sheet, rather than retyping them, avoids that. Once both columns are right, save the sheet as a CSV (File, Save As, CSV) so a script can read it cleanly.
Step 2: Apply the List With PowerShell
PowerShell reads a CSV and renames each file to its mapped name in a few lines. With a mapping.csv that has headers OldName and NewName:
Two things are worth watching on the first real run. A row whose OldName no longer matches anything on disk produces an error and is skipped, which is what keeps a typo from renaming the wrong file. A row whose NewName already exists in the folder is refused rather than overwritten, so nothing is silently lost to a collision. Because each error names the exact row that failed, you can correct just those cells in the sheet and re-run only the failures, and the list stays your single source of truth for the whole folder.
- Put mapping.csv in the same folder as the files.
- Import and preview: Import-Csv mapping.csv | ForEach-Object { Rename-Item -Path $_.OldName -NewName $_.NewName -WhatIf }
- Read the -WhatIf output to confirm each old name matched a real file and the new names look right.
- Remove -WhatIf and run it again to apply every rename from the list.
- Any row whose OldName doesn't match a file is reported as an error rather than renaming the wrong file, so check for skips.
Step 3 (Alternative): Apply It Without Scripting
If you'd rather not run a script, a couple of routes work. Some dedicated bulk-rename utilities can import a rename list directly, matching each row to a file. Or you can have Excel itself generate a batch of ren commands: in a helper column, build a formula like ="ren """&A2&""" """&B2&"""", copy the resulting lines into a .bat file, and run it in the folder. It's less elegant than importing a CSV, but it needs nothing beyond Excel and the command prompt. Whichever route you take, work on a copy of the folder the first time so a mismatched row can't do damage.
The mapping method shines when column B can be computed. If your files should be named from data you already keep in a spreadsheet, an order number, a client, a date, a formula fills the new-name column for hundreds of files at once, and the rename applies them all. That turns what looks like a tedious manual job into a two-minute one. The limit is that the data has to already exist in your sheet; if it doesn't, you're back to either typing each name or reading the files, which the next section covers.