サブフォルダを並べ替える Windows バッチ ファイル

サブフォルダを並べ替える Windows バッチ ファイル

C:\Users\User1\Desktop\Photos2019 というフォルダがあり、サブフォルダが 100 個以上あります。各サブフォルダには写真があり、すべて名前が異なりますが、各サブフォルダ内の 3 枚の写真は同じです。ディレクトリ内の各フォルダに 2 つのサブフォルダ (1 つは「Base」、もう 1 つは「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

編集: これまでのところ、各フォルダーで実行できるバッチ スクリプトを作成でき、これで目的を達成できます。ループするために /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

関連情報