Robocopy eines bestimmten Verzeichnisses und seines Inhalts, jedoch nicht der Dateien in derselben Verzeichnistiefe

Robocopy eines bestimmten Verzeichnisses und seines Inhalts, jedoch nicht der Dateien in derselben Verzeichnistiefe

Ich habe eine Ordnerstruktur wie diese:

    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

Ich möchte die Ordnerstruktur beibehalten. Jeder Ordner ( Folder_1 - Folder_n) kann entweder zusätzliche Dateien und/oder zusätzliche Unterverzeichnisse enthalten. Ich möchte sie auf Laufwerk belassen R:. Ich möchte nurKopieren Sie das !DownloadsVerzeichnis und seinen Inhalt nach E:\.

Das Ergebnis wäre also:

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

Ich habe versucht, einen Robocopy-Befehl zu verwenden, da robocopy /s R:\FolderTOP\*\!Downloads E:\FolderTOP\ich dachte, das Platzhalterzeichen stehe für jedes Folder_1 - Folder_nim Beispiel benannte Unterverzeichnis, aber ich erhalte eine Fehlermeldung.

Antwort1

Ich kenne mich mit Powershell nicht so gut aus, aber ich kann eine Batchdatei erstellen, die das kann.

Das Einzige, was Sie ändern müssen, sind die Quell- und Zielvariablen:

Legen Sie Quelle fest = %userprofile%\desktop\Source

Setze Destiny=%userprofile%\desktop\Destiny


Aktualisiert...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

verwandte Informationen