다음과 같은 폴더 구조가 있습니다.
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