从所有子目录删除文件,保留一个子目录以外的文件夹结构

Gorgon_Union

我试图从所有子目录中删除所有文件,同时保留文件夹的结构,但不包括从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\*.*但这似乎也不起作用。

mklement0

我建议使用另一种方法:

$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从目录和所有子目录获取所有文件,但不包含一个子目录

将多个子文件夹/子目录重定向到一个域

gsutil复制所有文件并创建一个子目录

重命名所有子目录中的文件和文件夹以删除字符

Python:遍历目录树并检查最后一个子目录是否有文件

如何迭代文件夹以获取第一个子目录中的内容?

如何使用单个find命令更改除1个文件夹以外的所有子目录的权限?

什么是性能更好的-一个目录中有许多文件,或者每个子目录中有多个子目录?

删除特定文件夹的文件和子目录

Powershell:将父文件夹中的所有子目录和内容复制到另一个文件夹目标

使用find删除除某个子目录中的所有文件以外的所有文件

Linux:删除只有一个文件且没有子目录的所有目录

忽略.gitignore中除一个子目录外的所有子目录

从多个父文件夹中删除子目录

WinRAR批处理文件,用于将每个文件夹中的第一个子目录压缩为一个zip文件

忽略除一个文件外的所有文件和子目录中的文件

在文件夹的所有子目录中创建相同的文件夹

sftp:上传文件夹中包含的所有文件,目录和子目录

想在一个文件夹的所有子目录中找到一个字符串

如何通过终端在每个子目录中复制除一个文件以外的整个目录?

删除文件夹中的子目录但保留单个文件

将子目录中的所有.smi文件打开到一个文件中

使文件夹中的所有文件可被所有项目(子目录)访问

列出SQL Server父文件夹中的所有文件夹子目录

bash列出所有目录,子目录,文件夹,子文件夹,然后输出到单独的文件

如何将文件从一个子目录移动到第一个子目录之外的另一个子目录?

Apache重定向除一个目录以外的所有子目录

Nginx将一个子目录的所有内容重定向到另一个子目录

更改所有子目录的文件夹和文件权限