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

1 つの方法を次に示します。

$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

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 に答える