Powershell中的另一个文件重命名问题

时间:2013-03-28 18:24:27

标签: regex powershell

我在文件名中有一个带有唯一子字符串的文件。因此我将它与正则表达式匹配。例如,假设文件名为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

注意:我不介意更改正则表达式以满足需求(可能使用组),但我只需要一个正则表达式。

2 个答案:

答案 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