0

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

如何重用相同的正则表达式来用 new 重命名文件名的子字符串部分$arbitrartyString

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

4

2 回答 2

2

这是一种方法:

$fileNameRegex = [regex] '(someFile\.).*(\.txt)'
$fileName = 'someFile.asdf1234.txt'
$arbitraryString = "random9753"

$fileName -match $fileNameRegex > $nul
"$($matches[1])$arbitraryString$($matches[2])"

someFile.random9753.txt
于 2013-03-28T18:51:15.960 回答
1

一种解决方案是将文件名拆分为子字符串,然后将它们连接在一起。

$filename = "someFile.asdf1234.txt"
$arbitraryString = "random9753"


$newfilename = $filename.substring(0,$filename.IndexOf("."))
$newfilename += '.' + $arbitraryString + '.'
$newfilename += $filename.Substring($filename.Length -3)

Write-Host $newfilename
于 2013-03-28T19:03:30.517 回答