Encontre todas as pastas onde o nome está no intervalo de tempo

Encontre todas as pastas onde o nome está no intervalo de tempo

Eu tenho muitas pastas e elas têm a seguinte convenção de nomenclatura:

  • pasta1(1924)
  • pasta2(2014)
  • pasta3(1999)
  • pasta4(2001)
  • pasta5(1891)

Agora eu adoraria mover/encontrar no explorer todas as pastas onde o ano (entre ()) está abaixo do ano 2000 e acima do ano 1900

Portanto, a saída seria pasta1 e pasta3.

Existe algum script que possa fazer isso?

Responder1

Se todas essas pastas estiverem abaixo C:\Source folder, execute o seguinte arquivo em lote 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
        )
    )
)

Responder2

Aqui está um exemplo de maneira de fazer isso (assumindo que todos os diretórios estão no mesmo nível)

find . -type d -name "fold*" -maxdepth 1|awk -F'[()]'  '{if ($2 > 1900 && $2 < 2000) print $0}'

Se você deseja executá-lo no sistema operacional Windows, o método de exemplo é usar algum ambiente cygwin (também o mobaxterm funciona bem) e executá-lo no terminal. Infelizmente, minhas habilidades no Windows são muito modestas e não consigo reescrevê-lo para script cmd nativo

informação relacionada