11
submitted 8 months ago* (last edited 8 months ago) by BobTheDestroyer@lemy.lol to c/powershell@programming.dev

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!

you are viewing a single comment's thread
view the rest of the comments
[-] d3Xt3r@lemmy.nz 2 points 8 months ago

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.

[-] BobTheDestroyer@lemy.lol 1 points 8 months ago

It manages to output one file titled 'name; 0++'

[-] d3Xt3r@lemmy.nz 2 points 8 months ago

Ah, I misplaced a quote in my code, I've update the post - try version.

[-] BobTheDestroyer@lemy.lol 1 points 8 months ago* (last edited 8 months ago)

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:

Rename-Item : Cannot bind argument to parameter 'NewName' because it is an empty string.
At line:1 char:86
+ ... ads\individuals.txt"; $i=0; dir | % { ren $_ "$($names[$i])"; $i++ }
+                                                   ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Rename-Item], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Rena
   meItemCommand

Maybe the command needs '.pdf' somewhere?

[-] d3Xt3r@lemmy.nz 3 points 8 months ago

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.

[-] BobTheDestroyer@lemy.lol 1 points 8 months ago* (last edited 8 months ago)

Just figured it out! Added '.pdf' in the second half of the command.

$names = cat "\path\to\names.txt"; $i=0; dir | % { ren $_ "$($names[$i]).pdf"; $i++ }

Thanks for all your help!

this post was submitted on 25 Mar 2024
11 points (100.0% liked)

Powershell

1 readers
1 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:


Rules:

Self-promotion rules:


founded 1 year ago
MODERATORS