我试图从所有子目录中删除所有文件,同时保留文件夹的结构,但不包括从2019年10月开始的每个子目录中的文件删除⇒ root_dir\*\2019\October\
目录结构如下所示:
C:\ Users \ User1 \ Documents \ MyFolder├───Directory1│├───2018││├───4 月 │││└─── 错误 ││├─── 八月 │││└───错误 ││├───February │││└───Error ││├───January │││└───Error ││├───July │││└───Error ││├─ ── 六月 │││└─── 错误 │││├─── 三月 │││└───错误││├───五月│││└───错误││├───十月 ││ │└──── 错误 ││└─── 九月 ││└─── 错误│└───2019│├───四月││└───错误 │├─── │├───二月││└───错误 ││└─── 错误 │├─── 二月 ││└─── 错误 │├─── 一月││└───错误│├───七月││└───错误│├── ─June ││└───Error │├───March ││└───Error │├───May ││└───Error │├───October ││└───Error │└ ───September │└───Error └───Directory2 ├───2018 │├───April ││└───Error │├───August ││└───Error │├── ─2月 ││└───错误 │├─── 一月 │├─── 七月 ││└─── 错误 │├─── 六月││└───错误│├───三月││└───错误│├───五月 ││└───Error │├───October ││└───Error │└───September │└───Error └───2019 ├───April │└───Error ├ ───August │└───Error ├───February │└───Error ├───January │└───Error ├───July │└───Error ├───June │└ ───错误 │└───七月├────三月 │└─ ──错误 ├─── 五月 │└──── 错误 ├─── 十月│└───错误└───九月└───错误
从Microsoft PowerShell文档中,我应该能够通配排除路径。我已经尝试了一些变体,但是现在我在这里:
$root = 'C:\Users\User1\Documents\MyFolder'
$excludes = 'C:\Users\User1\Documents\MyFolder\*\2019\October\'
Get-ChildItem $root -Directory -Exclude $excludes | ForEach-Object {
Get-ChildItem $_.FullName -File -Recurse -Force | Remove-Item -Force
}
除了仍然从C:\Users\User1\Documents\MyFolder\Directory1\2019\October\*
和删除文件以外,上述方法有效C:\Users\User1\Documents\MyFolder\Directory2\2019\October\*
我试过指定,.\2019\October\*.*
但这似乎也不起作用。
我建议使用另一种方法:
$root = 'C:\Users\User1\Documents\MyFolder'
$excludes = '*\2019\October\*'
Get-ChildItem $root -File -Recurse |
Where-Object FullName -notlike $excludes |
Remove-Item -Force -WhatIf
-WhatIf
预览删除操作;删除它以执行实际删除。
为简单起见,将枚举子树中的所有文件,然后根据其完整路径是否包含\2019\October\
路径成分将其过滤掉。
至于你尝试了什么:
$excludes = 'C:\Users\User1\Documents\MyFolder\*\2019\October\'
该-Exclude
参数仅支持文件名模式,不支持完整路径-尽管GitHub上有一个待处理的功能请求,以添加对路径的支持。
此外,使用Get-ChildItem -Exclude
无-Recurse
不起作用人们所期望的方式:然后排除被应用到输入路径-见这个GitHub的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句