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
Get-Item .\some-file-with-hyphens.txt | ForEach-Object {
Rename-Item $_ ($_.Name -replace "-", "")
}
This question may be more suitable for SuperUser.
4 Comments
Noesis
Can I use a wildcard for the Get-Item: 'Get-Item .*.tif' ?
Ansgar Wiechers
Yes, you can use wildcards in
Get-Item. And you format code by putting it between backticks: `code`Noesis
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.
Ansgar Wiechers
Those are single quotes, not backticks. Not sure what keyboard layout you use, but on US keyboards the backtick is left of the <1>.
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', '') }