gpt4 book ai didi

svn - 用于查找所有 svn 工作副本的 Powershell 脚本

转载 作者:行者123 更新时间:2023-12-02 08:50:13 26 4
gpt4 key购买 nike

我想编写 powershell 脚本将所有工作副本从 1.6 svn 升级到 1.7。问题是在指定的子目录中找到所有工作副本,并在第一次匹配时停止。此脚本可以找到所有 .svn 目录,包括嵌套在工作副本中的子目录:

Get-ChildItem -Recurse -Force -Path "d:\Projects\" |?{$_.PSIsContainer -and $_.FullName -match ".svn$"}|Select-Object FullName

是否有任何选项可以在目录中的第一个匹配项上停止 Get-ChildItem,并停止递归 subdirs 处理?有什么提示要看吗?

另一种选择是根据父\子目录关系获取输出结果并使用某种逻辑对列表进行排序\过滤。有点更令人困惑的方式,imo,但它也是一种选择......

最佳答案

我为这样的管道找到了合适的过滤条件。

$prev = "^$"

Get-ChildItem -Recurse -Force -Include ".svn" -Path "d:\Projects\" `
| ?{$_.PSIsContainer -and $_.Fullname.StartsWith($prev)-eq $false}`
| %{ $prev=$_.Fullname.TrimEnd(".svn"); $prev}

它类似于正则表达式反向引用,并且在管道过滤器中按预期工作。

关于svn - 用于查找所有 svn 工作副本的 Powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com