Powershell 查找和 move 项目

标签 powershell find move

嘿,我需要使用 powershell 脚本 move 很多文件,我有点需要这方面的帮助。

根如下

> tree .
\
├───Folder1
│   ├───Sub1
│   │   └───Stockfile
│   └───Sub2
└───Folder2
    ├───Sub1
    │   └───Stockfile
    └───Sub2

脚本需要找到库存文件并将它们 move 到每个主文件夹的 Sub2 文件夹中。

我制作了以下脚本来显示列表中的所有库存文件:

$var = get-childitem -Filter *stock* -recurse
foreach ($file in $var) {
write-host ($file.FullName)
}

最佳答案

尝试以下操作:

Get-ChildItem -File -Recurse -Filter *_stock.csv |
  Move-Item -WhatIf -Destination { $_.FullName -replace '^(.*)\\Sub1\\','$1\Sub2\' }

该方法从每个库存文件的完整路径中提取到 ...\Sub1 的路径前缀,并使 ...\Sub2 成为目标(目录)路径。

这样,库存文件就可以从 ...\Sub1 子树中的任何位置直接 move 到 ...\Sub2 中。

注意:

  • -WhatIf 显示首先发生什么;将其移除以执行实际 move 。

  • 假设库存文件路径仅包含一个 Sub1 组件,并且 Sub1 中没有重名的库存文件 子树。

  • -replace 将其第一个操作数解释为正则表达式,这就是 \ 字符的原因。必须转义为 \\ 才能被识别为文字;实际文件夹名称中的字符也可能需要转义(但在这种情况下不需要)。

    • 如果您事先不知道文件夹名称,您可以使用 [regex]::Escape($folderName) 安全地转义它

关于Powershell 查找和 move 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531883/

相关文章:

powershell - TypeTexting到Word文档时内容被截断

c++ - std::set<pair<int,int>> -- 仅使用 pair<>::first 作为键查找

python - 查找功能的参数

c++ - 使用 move() 而不是 std::move() 有什么陷阱吗?

c++ - 如何将 5(或零?)规则正确应用于包含带有字符串的自定义对象 vector 的类

regex - 将目录更改为与 powershell 中的正则表达式匹配的文件夹

iis - 使用Powershell更改IIS6站点主目录

c# - 我如何为我的 List<T> 中的 Find() 构建一个好的谓词委托(delegate)?

c++ - 如何在 C++ 中删除二维数组中的列

powershell - 尝试使用Add-QADGroupMember捕获错误