11
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 25 Mar 2024
11 points (100.0% liked)
Powershell
939 readers
3 users here now
PowerShell (POSH) is a a task automation command-line shell and scripting language created by Microsoft. It became part of the FOSS community in 2016 and is now available across Windows, Linux, and macOS
Resources:
- Install PowerShell – Instructions for Windows, Linux, and macOS
- PowerShell Galley Your one-stop shop community and Microsoft modules.
- PowerShell Repository – View the PowerShell source code, report issues, or contribute to the project yourself.
- PowerShell Community Call – Hear from and talk directly to the product team on the 3rd Thursday of every month
- PowerShell in Visual Studio Code – It’s time to say goodbye to ISE
Rules:
- Be civil (aka don’t be a jerk). Remember there are people from all walks of life, all with different levels of expertise. You can disagree with someone, but please be civil when doing so.
- Adhere to the Lemmy Code of Conduct
- Follow all programming.dev rules
- Posts must relate to PowerShell or the PowerShell ecosystem.
- Use code blocks to make things easier to read.
- Memes and humorous posts are allowed but try not over do it. And keep them relevant to PowerShell
- No discussion about piracy or hacking.
- If someone provides an answer that solves your problem, please reply, so others know what the solution was. ^And^ ^so^ ^the^ ^person^ ^who^ ^suggested^ ^it^ ^gets^ ^that^ ^oh^ ^so^ ^sweet^ ^shot^ ^of^ ^dopamine.^
- If you find a solution to your problem by other means, please take your time to write down the steps you used to solve your problem in the original post. You can potentially help others having the same problem!
Self-promotion rules:
- Self-promotion content must be marked as [OC]
- Do not SPAM. Content must be PowerShell related.
- Only 10% of your contributions can be self-promotion. In other words, 90% of your contribution must not be self-promotion.
- Personal blogs are not considered self-promotion, at this time, as long as they are free to access and relevant. Please do not abuse this.
founded 1 year ago
MODERATORS
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 I'm getting a 'Cannot create a file when that file already exists.' error. I checked the path so I am certain it is correct.
That means there's a duplicate entry, check the full error message for the file name. You can also use the
-Verbose
switch to see what's going on.It manages to output one file titled 'name; 0++'
Ah, I misplaced a quote in my code, I've update the post - try version.
So it sort of worked in that it outputed a bunch of files with the names but with blank icons and not the Adobe icons. Powershell also had an error for each list item that looked like the following:
Maybe the command needs '.pdf' somewhere?
Well yeah, you need the full name of the file. PowerShell will not automatically asumme the extension of a file.
Also that empty string error means there's a blank line somewhere in your input list, so you'll need to get rid of that.
Just figured it out! Added '.pdf' in the second half of the command.
Thanks for all your help!
Also I had someone help with a similar task of duplicating a Word file that is renamed from a list of names found in a csv file. What would be the code when a txt file is used?
That will crash if there is more than one line in individuals.txt, because by the second iteration '.\_2023 Summary Page.docx' has been renamed.
I see. Any suggestions on how to correct it?
Just use Copy-Item instead of Rename-Item if you want multiple identical files with different names
Actually they're all different files.
Then the snippet won't work because it only ever renames/copies the file
'_2023 Summary Page.docx'
. What are the actual names of the files you want to rename?