我们有文件:
CP1-GC1.dem
CP1-GC2.dem
CP1-GC3.dem
CP5-GC1.dem
CP5-GC4.dem
CP5-GC3.dem
如何获取最大的文件" GC"号码?
答案 0 :(得分:2)
更像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
如果数字可能有不同的长度,则有一个解决方案,左边的数字为零reference
有点复杂;-)但仍然是一个班轮。
gci *.dem|sort {[Regex]::Replace($($_.Basename.split('-')[1,0]), '\d+',{$args[0].Value.PadLeft(10, '0') }) }|Select -Last 1
答案 1 :(得分:0)
如果你正在将文件名读入数组并循环遍历它们,我会做这样的事情:
$files = "CP1-GC1.dem
CP1-GC2.dem
CP1-GC3.dem
CP5-GC1.dem
CP5-GC4.dem
CP5-GC3.dem" -split "\r\n"
$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
变量。
您可以调整上述代码以满足您的需求。