嘿,我需要使用 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/