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

Powershell

1167 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 2 years ago
MODERATORS
 

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 3 points 1 year ago* (last edited 1 year ago) (14 children)

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:

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

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 the ren first to see how the files are being renamed, before you do the actual rename. :)

[–] BobTheDestroyer@lemy.lol 1 points 1 year ago (6 children)

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?

Import-csv ‘.\individuals.csv’ | foreach-object {
    $newname = ‘2’ + $_.name + '.docx’
    Copy-item '.\_2023 Summary Page.docx' $newname
}
load more comments (3 replies)
load more comments (10 replies)