Renaming multiple files based on a list of names
Renaming multiple files based on a list of names
Note: I'm a beginner to Powershell and a bit more familiar with Bash (though still a beginner for that too).
*I have multiple PDF files and I want to rename each file based on a list of names found in an Excel/CSV (could be a text file if easier) file.
*The list begins at the A2 cell and the A1 cell has the header 'name'.
*The files are in sequential order and match the order of the list of names.
Thanks for your help!
If the CSV file contains both the current names and the new names, this should work if you use the first line for column labels (I'm using OldName and NewName in this example):
Import-CSV $pathToCSV | ForEach-Object { Rename-Item $_.OldName $_.NewName }
If you just have a list of new names as a text file where the first line of the file is the new name for the first file (by name, sorted alphabetically), this should work:
Perhaps my directions were unclear. The Excel/CSV file has the new names and I want to use them to replace the default names for the PDF files.
There's no point in having a CSV for just a single column, just make it a simple text file and it'll simplify the code a bit. So assuming you have a file called
names.txt
, here's a one-liner that can do the trick:As long as the order in your text file matches the order shown by
dir
, you shouldn't have any issues. Maybe do a dry run with a-WhatIf
to theren
first to see how the files are being renamed, before you do the actual rename. :)Thanks but PS closes so I assume it ran into an error. I'm not sure why because there is the same number of files and list items. I doublechecked to make sure.
I have no idea why this wouldn't work on your machine - I've tested it on mine and it works fine. So maybe you have overlooked some small things:
exit
command.