Você pode encontrar muitas perguntas semelhantes com respostas apropriadas aqui no SuperUser para descobrir como começar a escrever um script para isso. Como você não mencionou o sistema operacional que está usando, fornecerei uma solução Powershell para Windows.
Crie as novas subpastas em cada pasta no setA, faça um loop pelos arquivos do setA e copie-os para o A_files_folder
apropriado.
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\") }
Lidando com a segunda parte do trabalho, precisamos criar o caminho de destino usando partes do caminho do arquivo original, mas é quase o mesmo que o comando Copy-Item
anterior. Eu usaria isso:
Foreach ($file in Get-ChildItem -File -Recurse .\setB) { Move-Item -Path $file.FullName -Destination $(".\setA\" + $($file.DirectoryName.Split("\")[-1]) + "\B_files_folder\") }