首页 > 解决方案 > 确定并获取目录名称中的数字并在表达式中使用该数字

问题描述

我需要做的是创建一个可以执行ls目录的变量,找到具有特定命名约定的目录,确定这些目录中的最大数字(每个目录将以 a 结尾_#),然后将该数字加一到创建下一个目录。

例如:

ls c:\输出:

c:\ABC
c:\foo1
c:\foo2

我需要创建c:\foo3,因为c:\foo2目前是最高的。所以我需要确定最高目录是什么,然后用下一个增量编号创建一个新目录。

我得到了所有这些工作的一部分,但我无法让任何东西一起工作。

标签: powershellscripting

解决方案


$nextIndex = 1 + (
  (Get-ChildItem -Directory C:\foo*[0-9]).Name -replace '^.*\D' |
    Measure-Object -Maximum
).Maximum

New-Item -Type Directory C:\foo${nextIndex}
  • (Get-ChildItem -Directory C:\foo*[0-9]).Name返回名称以(至少)一位数字开头和结尾的所有目录C:\的名称。foo

  • -replace '^.*\D'从每个名称中删除除末尾数字之外的所有内容。

  • Measure-Object -Maximum然后确定生成的纯数字字符串中的最大值(PowerShell 在确定最大值时会自动将字符串转换为数字)。

  • 1 + (...).Maximum因此返回当前嵌入在目录名称中的最大数字加一。


推荐阅读