Windows批次檔對子資料夾進行排序

Windows批次檔對子資料夾進行排序

我有一個資料夾 C:\Users\User1\Desktop\Photos2019,其中包含 100 多個子資料夾。每個子資料夾中都有照片,名稱各異,但每個子資料夾中有 3 張照片相同。我希望能夠在目錄中的每個資料夾中建立 2 個子資料夾,一個名為“Base”,一個名為“Other”,並將這 3 個檔案全部移動到“Base”資料夾中,其他所有內容都移至「其他」資料夾中,如下所示。

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

編輯:到目前為止,我已經能夠製作一個可以在每個資料夾中運行的批次腳本,並且它將完成這項工作。當我嘗試添加 /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

相關內容