将两组文件夹合并为新结构

将两组文件夹合并为新结构

我有两组文件夹,它们是相同数据的两个版本,具有相同的子文件夹(200 多个)。我需要使用批处理将这些集合组合成一个略微新的结构。例如:

设置A\folder1\A_files  
    \文件夹2\A_文件  
    \folder3\A_文件
设置B\folder1\B_files  
    \文件夹2\B_文件  
    \文件夹3\B_文件  

我需要像这样设置 setA:

设置A\文件夹1\A_files_文件夹\A_files  
            \B_files_文件夹\B_files  
            \A_文件  
    \文件夹2\A_files_文件夹\A_files  
            \B_files_文件夹\B_files  
            \A_文件  
    \文件夹3\A_files_文件夹\A_files  
            \B_files_文件夹\B_files  
            \A_文件  

基本上,集合A获取两个新文件夹,一个用于复制A_文件一个要移动 B_文件变成。最后,什么都没有被移除集合A集合B文件夹将被删除。

很简单,但很难解释。

感谢您的帮助!

答案1

您可以在 SuperUser 上找到很多类似的问题和适当的答案,以便自己了解如何开始为此编写脚本。由于您没有提到您使用的操作系统,我将提供适用于 Windows 的 Powershell 解决方案。

在 setA 中的每个文件夹中创建新的子文件夹,然后循环遍历 setA 的文件并将其复制到适当的A_files_folder.

Foreach ($dir in Get-ChildItem -Directory -Recurse .\setA) { New-Item -Path $dir.FullName -Name "A_files_folder" -ItemType "Directory"; New-Item -Path $dir.FullName -Name "B_files_folder" -ItemType "Directory"; } 
Foreach ($file in Get-ChildItem -File -Recurse .\setA) { Copy-Item -Path $file.FullName -Destination $($file.DirectoryName + "\A_files_folder\") }

处理作业的第二部分,我们需要使用原始文件路径的部分来创建目标路径,但它几乎与上一个Copy-Item命令相同。我会用这个:

Foreach ($file in Get-ChildItem -File -Recurse .\setB) { Move-Item -Path $file.FullName -Destination $(".\setA\" + $($file.DirectoryName.Split("\")[-1]) + "\B_files_folder\") }

相关内容