我们有文件:
CP1-GC1.dem
CP1-GC2.dem
CP1-GC3.dem
CP5-GC1.dem
CP5-GC4.dem
CP5-GC3.dem
如何获取具有最大"GC"编号的文件?
一个更像PowerShell的解决方案:
gci *.dem|Sort {$_.Basename.split('-')[1,0]}|Select -Last 1
或详细:
Get-ChildItem -Filter *.dem |
Sort-Object {$_.Basename.split('-')[1,0]} |
Select-Object -Last 1
结果:
PS A:> gci *.dem|Sort {$_.Basename.split('-')[1,0]}|Select -last 1
Directory: A:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 08/9/2017 23:37 8 CP5-GC4.dem
如果数字可能具有不同的长度,则有一个解决方案可以将带有零的数字左边移动参考 有点
复杂;-(但仍然是一条线。
gci *.dem|sort {[Regex]::Replace($($_.Basename.split('-')[1,0]), 'd+',{$args[0].Value.PadLeft(10, '0') }) }|Select -Last 1
如果您将文件名读取到数组中并循环访问它们,我会做这样的事情:
$files = "CP1-GC1.dem
CP1-GC2.dem
CP1-GC3.dem
CP5-GC1.dem
CP5-GC4.dem
CP5-GC3.dem" -split "rn"
$hn = 0
$hfn = ""
foreach($e in $files)
{
if($e.SubString(6,1) -gt $hn)
{
$hn = $e.SubString(6,1)
$hfn = $e
}
}
Write-Host $hn
Write-Host $hfn
这将通过使用 SubString(( 来查找字符串中的特定字符,从而写出文件的最高数字和名称。然后,它会将其与迄今为止$hn
的最大数字进行比较,并在每次找到更大的数字时调整最高文件名$hfn
变量。
您将能够调整上述代码以满足您的需求。