100개가 넘는 하위 폴더가 있는 C:\Users\User1\Desktop\Photos2019 폴더가 있습니다. 각 하위 폴더에는 사진이 있으며 모두 이름이 다양합니다. 단, 각각의 사진 3장은 동일합니다. 디렉터리의 각 폴더에 'Base'라는 하위 폴더와 'Other'라는 하위 폴더 2개를 만들고, 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