首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell中带有版本号的文件排序

Powershell中带有版本号的文件排序
EN

Stack Overflow用户
提问于 2015-05-29 20:56:01
回答 3查看 798关注 0票数 0

我把这个文件夹放在目录里。上面有不同的版本。

代码语言:javascript
复制
CD1,CD2,CD3,CD4,CD5,CD6,CD7,CD8,CD9,CD11,CD12

我刚开始使用powershell,有人能帮我从上面的文件夹中获得最新版本的文件夹吗?这里CD12是最新的文件夹。我不能使用上次修改的时间,因为我同时复制它们。

代码语言:javascript
复制
$FolderName=(Get-ChildItem C:\Current\CD |Where-Object {$_.name -like "*CD*"}| sort{$_.name.Substring(2,2)}|Select-Object Name -Last 1).Name)
Write-Host "$FolderName"

我尝试了上面的脚本,但没有帮助。有谁可以帮我?下一个新版本是CD13,脚本应该获得该文件夹

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-29 21:39:53

你可以试试下面这样的方法

代码语言:javascript
复制
$max_version = Get-ChildItem "C:\Current\" | Where-Object {$_.PSIsContainer} 
| Foreach-Object {$_.Name} | Foreach-object {$_ -replace "CD", ""} 
| measure -maximum | Select-Object -expand Maximum

Write-host ("CD" + $max_version)

这将导致CD12

票数 0
EN

Stack Overflow用户

发布于 2015-05-29 21:44:27

你差点就有了。当我试图运行您的代码时,我遇到了两个错误。首先,在行尾有一个额外的')‘,导致语法错误。其次,您的'SubString()‘调用失败了,因为您试图获得字符串的第3个和第4个字符,而没有第4个字符("CD1")。但是,您不需要使用scriptblock来执行Sort命令。您只需对Name字段进行排序。

代码语言:javascript
复制
$FolderName = Get-ChildItem C:\7005\Hot-Fix\CD | where Name -like "CD*" | sort Name | Select-Object -Last 1 -ExpandProperty Name

另外,这使用了PowerShell 3语法,用于Where-ObjectSort-Object,以省略{}。它将-ExpandProperty参数用于Select-Object,因此不必将整个事件包装在parens中才能获得Name属性。

票数 0
EN

Stack Overflow用户

发布于 2015-05-30 03:10:42

你可以试试这个:

代码语言:javascript
复制
#requires -v 3
$baseFolder='C:\7005\Hot-Fix\CD'
$folder=dir $baseFolder\CD* -Directory | 
    ? basename -CMatch 'CD\d{1,}' | 
    sort @{e={'{0:0000}' -f [int]($_ -replace '\D')}} -Descending | 
    select -First 1

注意,我正在考虑区分大小写的匹配;而且,$folder包含您要寻找的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30538913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档