Пакетный файл Windows для сортировки подпапок

Пакетный файл Windows для сортировки подпапок

У меня есть папка C:\Users\User1\Desktop\Photos2019 с более чем 100 подпапками. В каждой из этих подпапок находятся фотографии, все с разными названиями, за исключением 3 фотографий в каждой из них, которые одинаковы. Я хотел бы иметь возможность создать 2 подпапки в каждой из папок в каталоге, одну с названием «Base» и одну с названием «Other», и переместить 3 одинаковых файла в папку «Base», а все остальное переместить в папку «Other», как показано ниже.

C:\Users\User1\Desktop\Photos2019
-Folder1/Base/Landscape.png
-Folder1/Base/Portrait.png
-Folder1/Base/Wide.png
-Folder1/Other/*.png

-Folder2/Base/Landscape.png
-Folder2/Base/Portrait.png
-Folder2/Base/Wide.png
-Folder2/Other/*.png

EDIT: Пока что мне удалось создать пакетный скрипт, который я могу запустить в каждой папке, и он будет выполнять работу. Но когда я пытаюсь добавить /r для его зацикливания, он продолжает работать, но не выполняет работу вообще.

У меня есть;

for %%a in (.) do md "Base"
for %%a in (.) do md "Other"
for %%a in (.) do move "Portrait.png" "Base"
for %%a in (.) do move "Landscape.png" "Base"
for %%a in (.) do move "Wide.png" "Base"
for %%a in (.) do move "*.png" "Other"

Это то, что я хочу, я пытаюсь запустить в каждой подпапке.

Как лучше всего это сделать? Спасибо.

решение1

Что ж, я свидетельствую, что forдля полного понимания смысла команды требуется несколько повторений.

С начальным деревом на моем тестовом RamDrive A:\

> tree /f a:\
A:\
└───Test
    ├───Folder1
    │       Landscape.png
    │       other.png
    │       Portrait.png
    │       Wide.png
    └───Folder2
            Landscape.png
            other.png
            Portrait.png
            Wide.png

Эта партия:

:: Q:\Test\2019\08\22\SU_1473860.cmd
@Echo off
set "StartDir=C:\Users\User1\Desktop\Photos2019"
Rem set "StartDir=A:\Test"

set "Base=Landscape.png Portrait.png Wide.png"

CD /D "%StartDir%"

for /d %%D in (*) Do (
    MD "%%~fD\Base"
    MD "%%~fD\Other"
    for %%B in (%Base%) Do Move "%%~fD\%%B" "%%~fD\Base\" >Nul 2>&1
    Move "%%~fD\*.png" "%%~fD\Other" >Nul 2>&1
)

дает такой результат:

> tree /F a:\
A:\
└───Test
    ├───Folder1
    │   ├───Base
    │   │       Landscape.png
    │   │       Portrait.png
    │   │       Wide.png
    │   │
    │   └───Other
    │           other.png
    └───Folder2
        ├───Base
        │       Landscape.png
        │       Portrait.png
        │       Wide.png
        └───Other
                other.png

Связанный контент