powershell - Powershell:提取部分文件名以创建文件夹并将文件移动到文件夹中
问题描述
我是 powershell 的新手,我正在努力实现以下目标:
我有一个格式相同的文件列表:SURNAME_FIRSTNAME_CODE1_CODE2_NAME.pdf/docx 等
我想创建一个名为:SURNAME FIRSTNAME CODE1 的子文件夹
然后将所有这些相关文件移动到文件夹中。
我设法找到一篇文章来完成第一部分(即姓氏),但不确定如何使它与其他部分一起工作......任何帮助将不胜感激。
到目前为止,这是我所拥有的:(感谢一位同事的海报)
Get-ChildItem -File -Path $directory -Filter "*.*" |
ForEach-Object {
New-Item -ItemType Directory "$directory$($_.Name.Split("_")[0])" -Force;
Move-Item -Path $_.FullName -Destination "$directory$($_.Name.Split("_")[0])\$($_.Name)"
}
解决方案
我就是这样做的。它使用Group-Object对属于同一目录的文件进行分组,并使用格式运算符创建目录名称。如果您有任何问题,请告诉我。
Get-ChildItem $directory -File |
group { "{0} {1} {2}" -f $_.BaseName.Split("_") } |
foreach {
$newDir = Join-Path $directory $_.Name
New-Item $newDir -ItemType Directory
$_.Group | Move-Item -Destination $newDir
}
推荐阅读
- html - 如何在模糊时保持打开物化日期选择器?
- python - 访问元组的元素
- firebase - Flutter 文档 Firestore 未删除 [CLOSE]
- oracle - Oracle:当列名以双引号开头时,物化视图快速刷新失败
- javascript - 为什么我不能使用香草 JavaScript fetch() API 使用 POST 方法到本地 json 文件?
- asp.net-mvc-5 - 使用 VisualStudio 在 localhost 中进行静态内容错误调试
- webpack - 从 Nuxt.js 与 PhpStorm 中的节点模块解析 SCSS 中的 @import .css
- javascript - 如果js回调window.print(),cefsharp winform静默打印到pdf
- java - 在 Java 中解码 C# 生成的 AES IV 和 KEY
- c# - BigBlueButton 集成 - “由于缺少凭据,身份验证失败。”