
폴더가 많고 다음과 같은 명명 규칙이 있습니다.
- 폴더1(1924)
- 폴더2(2014)
- 폴더3(1999)
- 폴더4(2001)
- 폴더5(1891)
()
이제 탐색기에서 연도(사이 )가 2000년 미만이고 1900년 위에 있는 모든 폴더를 이동/찾고 싶습니다.
따라서 출력에는 폴더1과 폴더3이 있습니다.
이 작업을 수행할 수 있는 스크립트가 있나요?
답변1
해당 폴더가 모두 아래에 있으면 자체적 C:\Source folder
으로 다음 배치 파일을 실행하십시오 C:\Source folder
.
@echo off
set dest=D:\Target folder
for /f "tokens=1,2 delims=()" %%d in ('dir /ad /b') do (
if %%e gtr 1900 (
if %%e lss 2000 (
if not exist "%dest%\%%d(%%e)\" md "%dest%\%%d(%%e)"
robocopy "%%d(%%e)" "%dest%\%%d(%%e)" /e /is /move
)
)
)
답변2
이를 수행하는 한 가지 샘플 방법은 다음과 같습니다(모든 디렉터리가 한 수준에 있다고 가정).
find . -type d -name "fold*" -maxdepth 1|awk -F'[()]' '{if ($2 > 1900 && $2 < 2000) print $0}'
Windows OS에서 실행하려는 경우 샘플 방법은 일부 cygwin 환경(mobaxterm도 잘 작동함)을 사용하고 터미널에서 실행하는 것입니다. 불행하게도 내 Windows 기술은 매우 미숙하여 기본 cmd 스크립트용으로 다시 작성할 수 없습니다.