4

I'm new to powershell and wanted to know if there's a way to remove a character from a file name. The character I'm trying to remove is a dash "-" and sometimes there are 2 or 3 dashes in the file name. Is it possible to have it rename files that have a dash in them?

2 Answers 2

8
Get-Item .\some-file-with-hyphens.txt | ForEach-Object {
  Rename-Item $_ ($_.Name -replace "-", "")
}

This question may be more suitable for SuperUser.

Sign up to request clarification or add additional context in comments.

4 Comments

Can I use a wildcard for the Get-Item: 'Get-Item .*.tif' ?
Yes, you can use wildcards in Get-Item. And you format code by putting it between backticks: `code`
Thank you, it worked!! I'm trying to format code in the comments with backticks ' this is code ' - it doesn't seem to work, i feel like a newb.
Those are single quotes, not backticks. Not sure what keyboard layout you use, but on US keyboards the backtick is left of the <1>.
6

To remove or replace characters in a file name use single quotes ' and for "special" characters escape them with a backslash \ so the regular expression parser takes it literally.

The following removes the $ (dollar sign) from all file names in your current directory:

Get-Item * | ForEach-Object { rename-item $_ ($_.Name -replace '\$', '') }

the following is the same as above using the shorter alias for each command:

gi * | % { rni $_ ($_.Name -replace '\$', '') }

The following is removing the standard character "Z" from all file names in your current directory:

gi * | % { rni $_ ($_.Name -replace 'Z', '') }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.