특정 디렉터리와 그 내용을 robocopy하지만 동일한 디렉터리 깊이에 있는 파일은 복사하지 않습니다.

특정 디렉터리와 그 내용을 robocopy하지만 동일한 디렉터리 깊이에 있는 파일은 복사하지 않습니다.

다음과 같은 폴더 구조가 있습니다.

    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

폴더 구조를 그대로 유지하고 싶습니다. 모든 폴더( Folder_1 - Folder_n)에는 추가 파일 및/또는 추가 하위 디렉터리가 포함될 수 있습니다. 나는 그들을 운전에 맡기고 싶다 R:. 나는 단지 원한다!Downloads디렉터리와 그 내용을 E:\ 에 복사합니다 .

결과는 다음과 같습니다.

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

robocopy 명령을 사용하려고 시도했습니다. 예제에서는 robocopy /s R:\FolderTOP\*\!Downloads E:\FolderTOP\와일드카드가 모든 하위 디렉터리 이름을 나타낼 것이라고 생각했지만 오류가 발생했습니다.Folder_1 - Folder_n

답변1

나는 powershell을 잘 모르지만 그것을 할 수 있는 배치 파일을 만들 수 있습니다.

변경해야 할 유일한 것은 Source 및 Destiny 변수입니다.

원본 설정=%userprofile%\desktop\Source

운명=%userprofile%\desktop\Destiny 설정


업데이트됨...2021년 7월 31일

@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

관련 정보