У меня есть два набора папок, которые представляют собой две версии одних и тех же данных с одинаковыми подпапками (более 200). Мне нужно объединить наборы с помощью пакета в слегка новую структуру. Например:

setA\folder1\A_files  
    \folder2\A_files  
    \folder3\A_files 
setB\folder1\B_files  
    \folder2\B_files  
    \folder3\B_files  

Мне нужно настроить setA так:

setA\folder1\A_files_folder\A_files  
            \B_files_folder\B_files  
            \A_files  
    \folder2\A_files_folder\A_files  
            \B_files_folder\B_files  
            \A_files  
    \folder3\A_files_folder\A_files  
            \B_files_folder\B_files  
            \A_files  

По сути, setA получает две новые папки, одну для копии A_files и одну для перемещения B_files . В конце концов, ничего не удаляется из setA и папка setB будет удалена.

Просто, но сложно объяснить.

Спасибо за вашу помощь!

1 ответ1

0

Вы можете найти много подобных вопросов с соответствующими ответами здесь, в SuperUser, чтобы понять, как начать писать сценарий для этого. Поскольку вы не упомянули, какую ОС вы используете, я предоставлю решение Powershell для Windows.

Создайте новые подпапки в каждой папке в 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\") }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .