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


更新...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

相關內容