Windows Batch-Datei zum Sortieren von Unterordnern

Windows Batch-Datei zum Sortieren von Unterordnern

Ich habe einen Ordner, C:\Benutzer\Benutzer1\Desktop\Fotos2019, mit über 100 Unterordnern. In jedem dieser Unterordner befinden sich Fotos, alle mit unterschiedlichen Namen, außer dass 3 Fotos in jedem gleich sind. Ich möchte in der Lage sein, in jedem der Ordner im Verzeichnis 2 Unterordner zu erstellen, einen mit dem Namen „Base“ und einen mit dem Namen „Other“, und die 3 Dateien, die alle gleich sind, in den Ordner „Base“ zu verschieben und alles andere in den Ordner „Other“, ungefähr wie unten.

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

BEARBEITEN: Bisher konnte ich ein Batch-Skript erstellen, das ich in jedem Ordner ausführen kann und das funktioniert. Wenn ich versuche, /r zum Schleifen hinzuzufügen, läuft es zwar weiter, aber es funktioniert überhaupt nicht.

Ich habe;

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"

Das ist, was ich möchte. Ich versuche, es in jedem Unterordner auszuführen.

Was wäre der beste Weg, dies zu tun? Danke.

Antwort1

Nun, ich bestätige, dass man die Hilfe zum forBefehl mehrmals lesen muss, um sie vollständig zu verstehen.

Mit einem anfänglichen Baum auf meinem Test-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

Diese Charge:

:: 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
)

ergibt dieses Ergebnis:

> 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

verwandte Informationen