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 !Downloads
Verzeichnis 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_n
im 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