特定のディレクトリとその内容を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:ディレクトリとその内容を E:\ にコピーします!Downloads

結果は次のようになります。

    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に設定します

Destiny=%userprofile%\desktop\Destiny を設定します


更新日...2021/07/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

関連情報