powershell - 确定并获取目录名称中的数字并在表达式中使用该数字
问题描述
我需要做的是创建一个可以执行ls
目录的变量,找到具有特定命名约定的目录,确定这些目录中的最大数字(每个目录将以 a 结尾_#
),然后将该数字加一到创建下一个目录。
例如:
ls c:\
输出:
c:\ABC c:\foo1 c:\foo2
我需要创建c:\foo3
,因为c:\foo2
目前是最高的。所以我需要确定最高目录是什么,然后用下一个增量编号创建一个新目录。
我得到了所有这些工作的一部分,但我无法让任何东西一起工作。
解决方案
$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
因此返回当前嵌入在目录名称中的最大数字加一。
推荐阅读
- php - 如果视频不存在,则仅从数据库中输出无效的 YouTube ID
- docker - 如何使用私有 docker 注册表而不是 docker hub?
- python - 如何在抓取锚点时处理错误
- java - 尽管包含正文,邮递员 POST 请求仍发送空流
- python - 如何将 .h5 文件(Keras)上传到 Azure Blob 存储而不用 Python 将其保存在磁盘中
- c# - Json 值字段内的 Json 字符串
- opc - OPC UA 中的用户令牌类型
- amazon-web-services - AWS lambda 超时和 getRemainingTimeInMillis()
- python - 如何在熊猫中有效地循环两次相同的数据帧并在达到条件时中断?
- android - Android jni 不使用单例模式