이름이 시간 범위 내에 있는 모든 폴더 찾기

이름이 시간 범위 내에 있는 모든 폴더 찾기

폴더가 많고 다음과 같은 명명 규칙이 있습니다.

  • 폴더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 스크립트용으로 다시 작성할 수 없습니다.

관련 정보