2

I have this PowerShell script that renames a file. The following is part of the string manipulation code (not my actual code, just to show the issue):

$text="String1.txt"
$text
$text.trimend(".txt")
$date=Get-Date -format yyyyMMdd
$text + $date
$newFile = $text.trimend(".txt") + "_" + $date + ".bak"
$newFile
$NewFile1 = $newFile.TrimEnd("_$date.bak") + ".bak"
$NewFile1

The result is:

String1.txt
String1
String1.txt20131104
String1_20131104.bak
String.bak

Why was the 1 at the end of String1 removed as well? I am expecting the result to be String1.bak.

2 Answers 2

5

The trimend() method takes a character array (not string) argument, and will trim all of the characters in the array that appear at the end of the string.

I usually use the -replace operator for trimming off a string value:

$text="String1.txt"
$text 
$text = $text -replace '\.txt$',''
$text

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

Comments

0

Developing on the answer at PowerShell to remove text from a string, I'm using these regex's to trim off an extension of unkown type with possible . elsewhere in the filename:

$imagefile="hi.there.jpg"
$imagefile
hi.there.jpg
$imagefile -replace '\.([^.]*)$', ''
hi.there
$imagefile -replace '([^.]*)$', ''
hi.there.

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.