我在文件名中有一个带有唯一子字符串的文件。因此我将它与正则表达式匹配。例如,假设文件名为someFile.asdf1234.txt
。
$fileNameRegex = [regex] 'someFile\.(.*).txt'
$fileName = Get-ChildItem C:\test | Where-Object {$_.Name -Match $fileNameRegex}
# $fileName = 'someFile.asdf1234.txt'
# so far this works.
我正在做的事情是使用此信息重命名文件
$arbitraryString = "random9753"
# the final file name needs to be "someFile.random9753.txt"
如何使用相同的正则表达式重命名文件名的子字符串部分和新的$arbitrartyString
?
注意:我不介意更改正则表达式以满足需求(可能使用组),但我只需要一个正则表达式。
答案 0 :(得分:2)
这是一种方式:
$fileNameRegex = [regex] '(someFile\.).*(\.txt)'
$fileName = 'someFile.asdf1234.txt'
$arbitraryString = "random9753"
$fileName -match $fileNameRegex > $nul
"$($matches[1])$arbitraryString$($matches[2])"
someFile.random9753.txt
答案 1 :(得分:1)
一种解决方案是将文件名拆分为子字符串,然后将它们连接在一起。
$filename = "someFile.asdf1234.txt"
$arbitraryString = "random9753"
$newfilename = $filename.substring(0,$filename.IndexOf("."))
$newfilename += '.' + $arbitraryString + '.'
$newfilename += $filename.Substring($filename.Length -3)
Write-Host $newfilename