powershell - 根据文件名段移动文件
问题描述
我正在尝试构建一个脚本以将旧 PDF 从其源文件夹移动到存档文件夹中。
我已经根据它们的数字名称将大约 15,000 个 PDF 组织到一系列文件夹中。下一个挑战是同一文件 IE 有多个修订版:
27850_rev0.pdf
27850_rev1.pdf
27850_rev2.pdf
在源文件夹中保留最高版本号并将所有较低版本移动到存档的最佳方法是什么?
任何帮助表示赞赏。
谢谢,
解决方案
您可以使用表达式 withGroup-Object
来隔离以该根文件名开头的所有文件,即 27850*。如果您然后对这些文件进行排序,您知道最后一个是最高修订号:
Get-ChildItem 'C:\temp\06-11-21' -Filter *.txt |
Group-Object -Property { $_.Name.Split('_')[0] } |
ForEach-Object{
$_.Group | Sort-Object Name | Select-Object -SkipLast 1 |
Copy-Item -Destination 'C:\temp\06-11-21_backup'
}
我在这个例子中使用了一些文本文件,但它应该是一样的。
注意:显然您必须更改文件夹和过滤器......
Group-Object
返回 GroupInfo 对象,以便获取我引用的原始对象组$_.Groups
。
这确实取决于静态的命名格式。如果您在文件名的其他地方有下划线,我们可能会遇到问题。但是,我们总是可以调整表达式。
推荐阅读
- excel - 循环速度提升
- python - NER 的 Transformer Pipeline 返回带有 ##s 的部分单词
- java - 模拟转换器的 Junit 测试用例
- react-native - React Native 地图标记更改会破坏地图状态
- vue.js - Vuex 参考没有返回正确的值
- javascript - 如何将“this”对象传递给javascript中的较低函数?
- c# - android xamarin 应用程序中的 System.Net.WebException
- javascript - 通过数据事件通过多个下拉菜单对 div 进行排序
- .net-core - Azure DevOps 使用 dotnet 核心下载失败:证书错误
- kubernetes - 是否可以在 AWS cloudfromation 上创建 Kubernetes pod、服务、副本控制器等?