powershell - 在Windows 7(cmd或PowerShell)上的子文件夹中展平文件

标签 powershell cmd robocopy

我有大量的文件,它们以非常分层的文件夹结构进行组织。在这种结构中,我关心的文件始终位于文件夹的最低级别。因此,我想展平目录,以便更轻松地访问我关心的文件。但是,我想保留文件夹结构的两个较高级别(“人员和项目”)。

这是EXISTING文件夹目录的示例:

  • 目录
  • 汤姆
  • 项目1
  • 子文件夹A级
  • FileA
  • FileB
  • 项目2
  • 子文件夹C级
  • FileC
  • FileD
  • 杰瑞
  • 项目1
  • 子文件夹E级
  • FileE

  • 这是DESIRED文件夹目录的示例:
  • 目录
  • 汤姆
  • 项目1
  • FileA
  • FileB
  • 项目2
  • FileC
  • FileD
  • 杰瑞
  • 项目1
  • FileE

  • 我曾尝试做这样的事情,但是这会将所有文件压平到一个目录中:
    for /r %f in (*) do @copy "%f" .
    但是,这会产生:
  • 目录
  • FileA
  • FileB
  • FileC
  • FileD
  • FileE

  • 我会很感激您能提供的任何指导。非常感谢!

    最佳答案

    这是一个Powershell方法。它获取所需级别的文件夹列表。然后,它将所有子文件上移到该级别。它还将删除子文件夹。

    $Rootfolder = Dir directory\*\* -Directory 
    
    ForEach($folder in $Rootfolder)
    {
        Dir $folder.fullname -Recurse -File | Copy-Item -Destination $folder.fullname
        Dir $folder.fullname -Recurse -Directory | Remove-Item -Force -Recurse -WhatIf
    }
    

    如果要删除它,请从最后一行删除-WhatIf。

    关于powershell - 在Windows 7(cmd或PowerShell)上的子文件夹中展平文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515314/

    相关文章:

    batch-file - 带有排除列表的 Robocopy

    windows - 批处理文件在执行后无限循环闪烁命令提示符

    directory - 为什么 Windows 资源管理器中的文件夹名称与命令行或 cygwin 不同?

    powershell - 可以测试变量是否仅包含特定值?

    html - ConvertTo-Html cmdlet 如何将列添加到输出

    windows - 从批处理脚本调用时,进度条 powershell 脚本不起作用

    string - 在 powershell 中连接两个字符串并作为一个参数提供

    windows - 在 Windows 命令行中将子文件夹上传到 FTP

    java - java中如何打开cmd

    networking - 如何在Server 2008中共享和授予对文件夹和内部文件夹的完全访问权限