1

Currently I'm using cmdlets like:

dir | rename-item -NewName {$_.name -replace "-","_"}

But now I need to add a prefix to the filename for all files in the directory.
I can't predict how long each filename is (it varies), so I can't just use a bunch of . wildcards.

I need it to append a fixed phrase to the beginning of each filename, regardless what that filename is.

  • 1
    See solution here stackoverflow.com/a/20874916/5518385 – Yisroel Tech May 7 '17 at 22:53
  • 1
    What is it now? A prefix or a suffix? For a prefix you already got a name so (literally) just add to your prefix or (for a suffix) just add the suffix to it. – Seth May 8 '17 at 12:09
6

An alternative approach to a regular expression would be to use simple string operations to create the new file name.

Get-ChildItem | Rename-Item -NewName { "Prefix_" + $_.Name }
  • 1
    I'm trying this, but it seems to go mad and keep trying to prefix filenames over and over until it crashes from the filename being too long - e.g. running the command above results in filenames like Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_... – Tom Carpenter Sep 2 '17 at 14:37
  • Split the command. $items = Get-ChildItem; And replace the Get-ChildItem in the above case with $items. – Seth Sep 6 '17 at 10:21
  • 1
    In the end based on this, I just added -Exclude Prefix_* to the Get-ChildItem command. – Tom Carpenter Sep 6 '17 at 10:23
3

You are quite near.

  • -replace uses RegEX and in a Regular Expression you anchor at the beginning with a ^
  • for a suffix you can similarly replace the anchor at line end with $
  • to avoid any possible re-iteration of the renamed file enclose the first element of the pipeline in parentheses.

(Get-ChildItem -File) | Rename-Item -NewName {$_.Name -replace "^","Prefix_"}
  • I like this answer because it doesn't cause an infinite loop and I don't need to write the prefix twice - like what happens in other solutions with the -Exclude Prefix_* to avoid the loop. – TCB13 Jul 16 '18 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.