我有一個資料夾 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