Robocopiar un directorio específico y su contenido, pero no los archivos en la misma profundidad del directorio.

Robocopiar un directorio específico y su contenido, pero no los archivos en la misma profundidad del directorio.

Tengo una estructura de carpetas como esta:

    R:\TOPFOLDER
├───Folder_1
│   │   other File.txt
│   │
│   ├───!Downloads
│   └───other_Folder
├───Folder_2
│   │   other File.txt
│   │
│   ├───!Downloads
│   └───other_Folder
├───Folder_3
│   │   other File.txt
│   │
│   ├───!Downloads
│   └───other_Folder
├───Folder_4
│   │   other File.txt
│   │
│   ├───!Downloads
│   └───other_Folder
└───Folder_5
    │   other File (2).txt
    │   other File.txt
    ├───!Downloads
    └───other_Folder

Quiero mantener intacta la estructura de carpetas. Cada carpeta ( Folder_1 - Folder_n) puede contener archivos adicionales y/o subdirectorios adicionales. Quiero dejarlos en el camino R:. solo quierocopie el !Downloadsdirectorio y su contenido a E:\ .

Entonces el resultado sería:

    E:\TOPFOLDER
├───Folder_1
│   └───!Downloads
├───Folder_2
│   └───!Downloads
├───Folder_3
│   └───!Downloads
├───Folder_4
│   └───!Downloads
└───Folder_5
    └───!Downloads

Intenté usar un comando robocopy: robocopy /s R:\FolderTOP\*\!Downloads E:\FolderTOP\pensé que el comodín representaría cada nombre de subdirectorio Folder_1 - Folder_nen el ejemplo, pero aparece un error.

Respuesta1

No conozco muy bien PowerShell, pero puedo crear un archivo por lotes que pueda hacerlo.

Lo único que tienes que cambiar son las variables Fuente y Destino:

Establecer fuente=%userprofile%\desktop\Source

Establecer Destiny=%userprofile%\desktop\Destiny


Actualizado...31/07/2021

@echo off

:: Copy the contents of folders called "!Downloads" in the Source only
chcp 65001 > nul

Set Source=%userprofile%\desktop\Source
Set Destiny=%userprofile%\desktop\Destiny
Set "SWord=!Downloads"

if /i not "%Source:~-1%"=="\" set "Source=%Source%\"
if /i not "%Destiny:~-1%"=="\" set "Destiny=%Destiny%\"

pushd "%Source%"
for /f "Delims=" %%a in ('dir /s /ad /b *%SWord%*') do (                                                                                                                 
                                                        call :CopyFiles "%%~Fa"                                                                                                                   
                                                       )
exit

:CopyFiles
set "Folder=%~1"
Call set "Folder=%%Folder:%Source%=%%"
xcopy "%Folder%" "%Destiny%%Folder%\" /h /s /r /y /i /q
goto :EOF

información relacionada