2013-03-28 22 views
0

我在文件名中有一個具有唯一子字符串的文件。因此我用正則表達式匹配它。例如,可以說文件名是someFile.asdf1234.txtPowershell中的另一個文件重命名問題

$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

我不是跟着你遇到問題的地方......用正則表達式或文件重命名? – aphoria

+0

我試圖澄清在編輯。 –

回答

2

這裏有一種方法:

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

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

someFile.random9753.txt 
+0

這會工作。我可以從這裏做到這一點......謝謝。 –

1

一種解決方法是將文件名拉開成子,然後串聯在一起。

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


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

Write-Host $newfilename 
相關問題